CSS实现自适应正方形、等宽高比矩形

1.利用vw、vh、vmin、vmax,vw表示的是viewport的宽度,也就是视口的宽度,vh表示的是视口的高度,vmin=min{vw,vh}取的是两者中较小的值,vmax ={vw,vh},1vm = 1% viewport width其他同理,所以利用上诉的单位来定义矩形的宽高即可实现等比变换。

1 div{
2  width :1vm;
3  height:1vm;
4 }

2.利用垂直方向上的padding值,当容器中的内容超过了容器的宽高时,容器的内容会扩充到padding中,同时padding,margin如果设置为百分比,则均是相对于父级元素的宽度而言的,所以即可以使用如下方式宽高1:1,同理可以设置其他的比例,在这里需要注意一下,如果不写hegith的话,正方形内文字会溢出,溢出的高度正好就是文字所占空间的高度。 如果将padding-bottom换成padding-top,在正方形中有内容的时候,内容会在正方形外面,这是因为默认文字是从左到右,从上到下的排列所以paddin-top以后文字会在正方形外面

1 div{
2   height:0px;
3   width:100%;
4   padding-bottom/top:100%;
5 }

3.利用双层嵌套来写,将外层的div的position设置relative,内层的position设置为absoult,利用绝对定位消除空间占用 ,分别看设置成padding-top/padding-bottom的效果

 1 <div class="square3">
 2     <div class="con">
 3         内容
 4     </div>
 5 </div>
 6 <div class="square3-2">
 7     <div class="con">
 8         内容
 9     </div>
10 </div>
11 <style>
12 .square3{
13     padding-bottom:100%;
14     height: 0;
15     background:#ccc;
16     width: 50%;
17     position: relative;
18 }
19 .square3-2{
20     padding-top:100%;
21     height: 0;
22     background:#ccc;
23     width: 50%;
24     position: relative;
25 }
26 .con{
27     position: absolute;
28     width: 100%;
29     height: 100%;
30 }
31 </style>

  运行之后我们发现写padding-top还是不可以,我们来检查代码发现,在写内层的div时候没有给top,left的值,让我们把top,left加上再看看

1 <style>
2 .con{
3     position: absolute;
4     width: 100%;
5     height: 100%;
6     top:0;
7     left:0;
8 }
9 </style>

4.利用子元素将父元素撑起来,利用margin-top,但是要注意margin塌陷的问题 
父元素:

1 .container{
2   overflow:hidden;//触发BFC解决margin问题
3   width:100%;
4 }
5 .container:after{
6   content:"";
7   margin-top:100%;
8   display:block; //块级元素才可以有垂直方向上的margin
9 }

原文地址:https://www.cnblogs.com/zlv2snote/p/10421514.html

时间: 2024-11-05 23:23:13

CSS实现自适应正方形、等宽高比矩形的相关文章

移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 )

序言:应朋友要求随手写了一下移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 ) ,以备后用 LESS代码: .adaptive-circle { margin: 50px auto 0; width: 80%; height: 0; padding-top: 80%; border-radius: 100%; border: 1px solid #000; box-sizing: border-box; // for .layout { height: 100%; } positi

css实现自适应正方形的方法 http://www.cnblogs.com/dantis/archive/2017/05/12/6846611.html

页面布局中,我们经常需要用百分比来实现宽度自适应,但是如果这时候高度要跟宽度呈固定比例变化,该怎么办呢? 很简单,我们可以利用元素的padding或margin的百分比值是参照宽度的这一特性来实现, 即如果元素的padding或margin值是百分比值,那么,它的值是根据父元素的宽度来计算的. 所以,实现一个自适应的正方形,可以有两种写法: 可以这么写: 1 <style> 2 .box{ 3 width: 50%; 4 padding-top: 50%; 5 background-color

css实现自适应正方形的方法

页面布局中,我们经常需要用百分比来实现宽度自适应,但是如果这时候高度要跟宽度呈固定比例变化,该怎么办呢? 很简单,我们可以利用元素的padding或margin的百分比值是参照宽度的这一特性来实现, 即如果元素的padding或margin值是百分比值,那么,它的值是根据父元素的宽度来计算的. 所以,实现一个自适应的正方形,可以有两种写法: 可以这么写: 1 <style> 2 .box{ 3 width: 50%; 4 padding-top: 50%; 5 background-color

巧用padding让图片宽高比固定并自适应布局

1.从上图知道原始图片大小是 800 * 250,即宽高比为 3.2: 2.html 及 css 代码如下, 可以知道就只是在一个div里面放了一张图片,那么如何让这张图片的宽高比固定呢,看了css之后就知道了原来是神奇的padding帮了我们的忙. 3.当img的宽度为100%时,那么.banner的padding-bottom(padding-top也可以)的值为 100%(图片想要设置的宽度) / 3.2(图片的原始宽高比)= 31.25%: (如果你想把 img 的宽度设为50%的话,那

CSS-实现三角形、梯形、平行四边形、圆形、椭圆形、对话框、自适应正方形

本文篇幅较长,希望能坚持看完,转载请注明出处,如果觉得好文请给个赞吧 CSS实现梯形 CSS实现三角形和梯形主要是依靠border是梯形的特性来做的,有点像相框的那种感觉. 首先我们先给一个正方形设置比较宽的边框.如下. <div id="test1"></div> <style> #test1{ width: 50px; height: 50px; background: purple; border-top: 50px solid red; bo

使用css让动态容器按固定宽高比显示

需求:页面上有一个div的宽度是随着屏幕宽度的改变而改变的,但其宽高比始终是2:1,也就是当宽度是1000px时,高度为500px 分析:无论浏览器窗口如何改变,始终要让目标元素的宽高比保持2:1,我们第一个想到的可能是使用js来实现,但是使用js来实现往往会比较耗费性能,那么今天我们就来讲下使用css来完成这个需求. 实现:作为"码农"我们还是直接上代码来得直观一点! html: <body> <div class="container">

css实现定宽高比(非内容撑出)

<head> <style> .before { display: flex; width: 100px; background: #f00; } .before:before { content: ""; padding-top: 100%; } </style> </head> <body> <div class="before">before</div> </body&g

CSS 图片自适应容器

https://www.jb51.net/css/660677.html 经常有这样一个场景,需要让图片自适应容器的大小. 1.img标签的方式 我们马上就能想到,把width.height 设置为100%啊.来看一哈效果. ? 1 2 3 <div class='div1'>     <img src="./peiqi.png" alt=""> </div> ? 1 2 3 4 5 6 7 8 9 10 11 .div1 {  

加载的过程中图片变形了? --教你自定义自动适配图片宽高比的RatioLayout

很多同行在开发中可能会遇到这样的问题,就是在加载图片的时候会出现图片变形的问题.其实这很可能就是你的图片宽高比和图片所在容器的宽高比不匹配造成的.比如说图片的宽为200,高为100.宽高比就是2,那么这时候把它放在宽高比为1或者3的控件上就会分别出现变窄和变宽的问题.只有在容器宽高比为2的时候图片才会和原始显示效果一样.怎样解决这个问题呢?这个时候就可以创建一个能够自适应图片宽高比的父容器来包裹ImageView就可以了.在使用RatioLayout的时候要注意以下几点: 1)ImageView