304 private links
- Too small target areas
- Not using gap with Flexbox
- Unforgiving target areas for dropdowns
- No delay before closing drodowns
- Not animating anchor links
Better CSS defaults
About regular links and hx-boost. This hx-boost exists only to compete with SPA. Building good websites requires dropping the sugar high of hx-boost and saying “here’s how to use a cache header.”
Use cache headers: cache-control if possible and etag for dynamic resources. "If I don’t even want to include a version number—maybe for a file like stylesheet.css—I can use a URL query."
Leverage HTML as much as possible: it only gets better.
When to use HTMX then? "Until HTML has an API to keep live content persistent across page navigations, some SPA functionality is required to make that happen."
SPAs are an advanced tool that the industry deceptively marketed as a simple one. Aram is a highly experienced web developer who’s using hx-boost to push the boundaries of what’s possible with page navigations; Most people, who just want to add a little interactivity to their webpage, should stick with the simplest tool available: a regular link.
rgba(from currentColor r g b /. 35
or for better support:
color-mix(in srgb, currentColor 35%, [#0000)](https://shaarli.lyokolux.space/./add-tag/0000))
I can see potential advantages to target all details content (except summary) as one container.
Browser support is not enough (~69% at the time of writing) and Firefox does not support it though: https://caniuse.com/?search=%3A%3Adetails-content
Let's see in months or 1-2 years!
Sometimes the outline is hidden because of some overflow though.
a:not(:is(:hover, :focus)) {
text-decoration-color:
color-mix(in srgb, currentColor, transparent 75%);
}- The HTTP layer is straightforward: it turns HTTP requests into structures to be used by the service layer and vice versa.
- The service layer contains all the business logic of the service: data validation, business invariants, etc...
- The repository wraps the database queries
Then come some strategies:
- Cron jobs
- Caching is done at the service layer because the repository layer must stay dumb and the business rules often impact caching.
- logging with tracing
- Serving SPAs and static assets with a custom axum handler and a fallback URL for everything outside of the
/api. Static assets can be served with therust_embedcrate.
The project structure looks like:
cmd/
my-server/
migrations/
0001.sql
Cargo.toml
main.rs
server.rs
scheduler.rs
worker.rs
webapp.rs
libs/
mailer/
Cargo.toml
mailer.rs
queue/
Cargo.toml
queue.rs
stripe/
Cargo.toml
stripe.rs
services/
users/
repository/
users.rs
sessions.rs
service/
get_user.rs
get_session.rs
Cargo.toml
errors.rs
model.rs
repository.rs
service.rs
Cargo.toml <- Cargo.toml for the workspace
Dockerfile.my-server
Makefile
README.mdEval scoped into a function has a default global scope: wtf.
and a lot of things
Names are changing and diverse. They are so different that a validator for them seems irrelevant.
:where() apply styles with 0 specificity. It's a great way to provide defaults to css classes.
Another modern solution is to use @layer.
Wow! mix-blend-mode: multiply; and the linear-gradient effect are awesome.
Avoid layered text-shadows for text outlines.
Use paint-order: stroke fill instead!
Long form options are much more self-explanatory for the reader.
I totally agree
How to customize gaps between elements?
We don't have a great way to do it currently.
- Adjust the vertical margin of the title or description.
Wrap title and description in a new container and re-apply flexbox with a smaller spacing.
Use the default flow layout with margins.