Using CSS's calc() function, you can perform mathematical operations in a style sheet without JavaScript. 1. It can be used to mix different units (such as px and vh) to achieve layout adjustment, such as setting the height of the main content area to the viewport height minus the fixed head height; 2. By combining the viewport units to realize responsive spacing, reducing the use of media queries, such as the container margin changing with the screen width; 3. Support dynamic positioning elements, such as centering the prompt box or adjusting the margin of the main content area according to the sidebar width. calc() is syntax friendly and has good compatibility, and is suitable for a variety of scenarios where flexible values are required.
You don't always need JavaScript to handle dynamic sizing or positioning in CSS — the calc()
function gives you a powerful way to do math right in your stylesheets. It's especially handy when you need values that depend on multiple units or changing conditions.

Here are some practical ways to use calc()
effectively:

Mixing Units for Layout Adjustments
One of the most common uses is combining different units like px
, em
, %
, and vw
. This comes in handy when you want to subtract a fixed header height from a full viewport height, for example:
.main-content { height: calc(100vh - 80px); }
This makes sure your main content area fills the screen but leaves space for an 80px tall header. Without calc()
, mixing those two units wouldn't be possible directly.

Use this pattern any time you're layering fixed and relative sizes — sidebars, banners, or responsive padding adjustments all benefit from it.
Responsive Spacing Without Media Queries
Instead of jumping between media queries just to adjust margins or padding, try using calc()
with viewport units:
.container { padding: calc(20px 2vw); }
This increases padding slightly as the screen gets wider, keeping things visually balanced without needing to write extra breakpoints. Just make sure the math doesn't lead to overly large or small values on extreme screen sizes.
A few ideas for where this works well:
- Font sizes that scale gently with screen width
- Gaps between grid items
- Margin spacing around containers
Positioning Elements Dynamically
If you're placing something like a tooltip or dropdown menu, calc()
helps align it precisely based on other known dimensions:
.tooltip { left: calc(50% - 100px); /* centers a 200px wide tooltip */ }
Or if you have a fixed sidebar and want your main content to shift accordingly:
.main { margin-left: calc(250px 2rem); /* sidebar width spacing */ }
These kinds of calculations keep layout relationships consistent even as you tweak other parts of the design.
It's not magic, but once you start using calc()
regularly, you'll find yourself writing fewer hacks and relying less on JavaScript for layout math. The syntax is forgiving, and browser support is solid these days — so feel free to use it anywhere you need flexible values.
The above is the detailed content of Using the CSS calc() function for dynamic values. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

CSS blocks page rendering because browsers view inline and external CSS as key resources by default, especially with imported stylesheets, header large amounts of inline CSS, and unoptimized media query styles. 1. Extract critical CSS and embed it into HTML; 2. Delay loading non-critical CSS through JavaScript; 3. Use media attributes to optimize loading such as print styles; 4. Compress and merge CSS to reduce requests. It is recommended to use tools to extract key CSS, combine rel="preload" asynchronous loading, and use media delayed loading reasonably to avoid excessive splitting and complex script control.

ThebestapproachforCSSdependsontheproject'sspecificneeds.Forlargerprojects,externalCSSisbetterduetomaintainabilityandreusability;forsmallerprojectsorsingle-pageapplications,internalCSSmightbemoresuitable.It'scrucialtobalanceprojectsize,performanceneed

No,CSSdoesnothavetobeinlowercase.However,usinglowercaseisrecommendedfor:1)Consistencyandreadability,2)Avoidingerrorsinrelatedtechnologies,3)Potentialperformancebenefits,and4)Improvedcollaborationwithinteams.

CSSismostlycase-insensitive,butURLsandfontfamilynamesarecase-sensitive.1)Propertiesandvalueslikecolor:red;arenotcase-sensitive.2)URLsmustmatchtheserver'scase,e.g.,/images/Logo.png.3)Fontfamilynameslike'OpenSans'mustbeexact.

Autoprefixer is a tool that automatically adds vendor prefixes to CSS attributes based on the target browser scope. 1. It solves the problem of manually maintaining prefixes with errors; 2. Work through the PostCSS plug-in form, parse CSS, analyze attributes that need to be prefixed, and generate code according to configuration; 3. The usage steps include installing plug-ins, setting browserslist, and enabling them in the build process; 4. Notes include not manually adding prefixes, keeping configuration updates, prefixes not all attributes, and it is recommended to use them with the preprocessor.

CSScounterscanautomaticallynumbersectionsandlists.1)Usecounter-resettoinitialize,counter-incrementtoincrease,andcounter()orcounters()todisplayvalues.2)CombinewithJavaScriptfordynamiccontenttoensureaccurateupdates.

In CSS, selector and attribute names are case-sensitive, while values, named colors, URLs, and custom attributes are case-sensitive. 1. The selector and attribute names are case-insensitive, such as background-color and background-Color are the same. 2. The hexadecimal color in the value is case-sensitive, but the named color is case-sensitive, such as red and Red is invalid. 3. URLs are case sensitive and may cause file loading problems. 4. Custom properties (variables) are case sensitive, and you need to pay attention to the consistency of case when using them.

Theconic-gradient()functioninCSScreatescirculargradientsthatrotatecolorstopsaroundacentralpoint.1.Itisidealforpiecharts,progressindicators,colorwheels,anddecorativebackgrounds.2.Itworksbydefiningcolorstopsatspecificangles,optionallystartingfromadefin
