How to create a responsive square using CSS
Sep 24, 2025 am 03:28 AMUse aspect-ratio: 1/1 to create a responsive square, and set the aspect ratio in modern browsers; if you need to be compatible with old browsers, you can use padding-top: 100% technique to maintain the consistency of width and height by relative units; you can also use vw units to make the square change with the viewport.
To create a responsive square in CSS that maintains its aspect ratio across different screen sizes, you don't need JavaScript or fixed dimensions. The key is using relative units and clever techniques to preserve the 1:1 width-to-height ratio. Here's how to do it reliable.
Using Padding-Top Trick
This method leverages the fact that vertical padding (like padding-top or padding-bottom) is calculated based on the element's width when used in block-level containers . This allows you to set a height equal to the width.
- Set the container's width as a percentage or viewport unit for responsiveness.
- Use padding-top: 100% to make the height equal to the width.
- Apply position: relative to the container so inner content can be positioned correctly.
- Add content inside an absolute-positioned child element if needed.
Example:
<!-- Square content goes here -->
Using Aspect Ratio (Modern Approach)
If you're targeting modern browsers, use the aspect-ratio property. It's simpler and more intuitive.
- Set aspect-ratio: 1 / 1 to enforce a perfect square.
- Combine with a flexible width (eg, 50% or 100vw).
- No need for extra wrappers or hacks.
Example:
<!-- Responsive square -->
Using Viewport Units
You can also use viewport width (vw) or viewport height (vh) units if you want the square tied to screen size.
- Set both width and height to the same vw value.
- Ensure it scales smoothly but stays proportional.
Example:
<!-- Scales with viewport width -->
Each method has its place. Use aspect-ratio when browser support allows. Fall back to the padding-top trick for wider compatibility. Viewport units work well for full-screen or dynamic layouts. Pick the one that fits your project's needs.
The above is the detailed content of How to create a responsive square using CSS. 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.

ArtGPT
AI image generator for creative art from text prompts.

Stock Market GPT
AI powered investment research for smarter decisions

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)

Useobject-fitormax-widthwithheight:autotopreventimagedistortion;object-fitcontrolshowimagesfillcontainerswhilepreservingaspectratios,andmax-width:100%;height:autoensuresresponsivescalingwithoutstretching.

clamp() function realizes responsive font scaling through the minimum, preferred and maximum values; 2. The syntax is clamp (minimum value, preferred value, maximum value), and commonly used rem and vw units; 3. The font takes the minimum value on the small screen, and scales according to vw as the screen increases, and does not exceed the maximum value; 4. Reasonably select the numerical value to ensure readability and avoid being too large or too small; 5. Combining the rem type proportion to improve design consistency.

1. Open the web page printing interface, click "More Settings" and uncheck "Header and Footer" to remove automatically added URLs, dates and other information. 2. By adding the CSS style of @mediaprint{@page{margin:0}} to the web page code, the default margins and headers and footers can be cleared. 3. Install third-party printing extensions such as PrintEdit, which can edit print content more flexibly and disable the default header and footer.

Use aspect-ratio:1/1 to create a responsive square, and set the aspect ratio in modern browsers; if you need to be compatible with old browsers, you can use padding-top:100% technique to maintain the consistency of width and height by relative units; you can also use vw units to make the square change with the viewport.

Use backdrop-filter:blur() to achieve the frosted glass effect, combining rgba transparent background, thin borders and rounded corners, such as .frosted-card{backdrop-filter:blur(10px);background-color:rgba(255,255,255,0.1);border:1pxsolidrgba(255,255,255,0.2);border-radius:12px;padding:20px;}, be sure to ensure that there is content behind the elements and pay attention to browser compatibility.

Responsive design is implemented through media query, first defining the minimum width condition for mobile priority, then gradually adapting to the tablet and desktop, combining range, direction and resolution to optimize the layout.

Use transform:rotate() to achieve element rotation, support units such as deg, adjust the rotation center through transform-origin, and combine transition to achieve smooth animation effect.

Use the attribute selector to select elements with a specific data attribute, such as [data-status] select all elements containing the attribute, and [data-status="active"] select elements with the value active.
