html在页面显示一个正方形,CSS实现一个自适应的正方形的方法示例

传统方法正方形用固定的形式写 直接长=宽写固定的值如下

.box{

width: 200px;

height: 200px;

background: pink;

color: #666;

}

1ef17815e8d0a9712ad85b021d394485.png

但是很多情况下,在移动端的设计里,图片的宽度随着不同的移动设备进行改变的,这个时候就需要用到自适应的正方形的实现。

下面介绍两种比较简单的实现方法:

方法一:CSS3 vw 单位,vw是相对于视口的宽度。视口被均分为100单位的vw。1vw = 1% viewport width

.box{

width: 20%;//width:20vw也可以

height: 20vw;

background: pink;

}

方法二:设置盒子的padding-bottom样式,让盒子的padding-bottom和盒子的宽度一样,同时设置heigh = 0px;

*{

margin: 0;

padding: 0;

}

.box{

width: 20%;

/* 设置height为0 ,避免盒子被内容撑开多余的高度 */

height: 0px;

/* 把盒子的高撑开,

和width设置同样的固定的宽度或者百分比 ,

百分比相对的是父元素盒子的宽度 */

padding-bottom: 20%;

background: pink;

color: #666;

}

 这是一个自适应的正方形

86f1189f29d85d80587b032f7c3979e8.png

要注意的是,如果这里没有写height:0px;当盒子里面有内容的时候,盒子会被内容撑大

f3dcacfadc13ff920b7f8c88f107d004.png      

fe8994dc51df4d27f7c03c26a472d232.png

如果把padding-bottom改成padding-top会出现什么现象?

ab84175c1528ea6eeb5bccc406352cca.png       

ce3bf3c7f8e3e98853d7c6497c67049a.png

可以看出来在正方形中有内容的时候,内容会现实在正方形外面,这是因为默认文字是从左到右,从上到下的排列,所以paddin-top以后文字会在正方形外面,所以这里的paddin-bottom和padding-top并不能混用

另外因为盒子设置了heigh:0px;导致该元素里面再有子元素的时候,就无法正常设置高度。所以我们需要用到position: absolute;使当前内容脱离文档流,那么内容的高度百分比参照的就是父级的宽度

*{

margin: 0;

padding: 0;

}

.box{

width: 20%;

/* 设置height为0 ,避免盒子被内容撑开多余的高度 */

height: 0px;

/* 把盒子的高撑开,

和width设置同样的固定的宽度或者百分比 ,

百分比相对的是父元素盒子的宽度 */

padding-bottom: 20%;

background: pink;

color: #666;

position: relative;

overflow: hidden;

}

p{

position: absolute;

width: 100%;

height: 100%;

background: yellow;

}

d1a5d618238292709a2ced49b9bbd144.png

这样子盒子里面的内容就把正方形占满啦

到此这篇关于CSS实现一个自适应的正方形的方法示例的文章就介绍到这了,更多相关CSS 自适应正方形内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值