使用CSS定义一个和屏幕宽度一样正方形容器

使用CSS定义一个和屏幕宽度一样正方形容器

  介绍一下如何使用CSS定义一个和屏幕宽度一样正方形容器。


问题

  有时候,我们在移动端需要做一个商品展示页面,一打开页面,屏幕的上面一半展示为商品的图片,下面才是商品的文字信息介绍,那么我们要怎么实现在图片加载之前预留一个正方形区域给图片,防止一开始因为没有图片导致文字往上跑然后等图片加载出来后浏览器再对界面重排这一不优雅的情况发生,怎么设置图片的宽高使其宽高刚好等于屏幕的宽度呢。
  商品


解决方案

//html
<div class="square">
    <img class="img" src="img/drinks.jpg"/>
</div>

//css
.square{
    position: relative;
    width: 100%;
    padding-top: 100%;
    height: 0;
}
.img{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

  其实很简单,我们只需要设置包裹图片的父元素(同时也是 body 的子元素,也就是这里类名为 square 的 div )其宽度为100% 还有 padding-top 为100% ,这样,在图片加载之前相对于区域就有一个和屏幕宽度一样的正方形容器。
  查看css手册我们可以知道,当我们给 padding 赋值为百分比的时候,其数值时基于父元素的宽度的百分比的内边距,而这里的父元素宽度为100%即屏幕的宽度,所以其我们就可以获得一个和屏幕宽度一样的正方形容器。
  然后我们再对图片标签进行定位和设置其宽度和高度都为100%,其数值为基于包含它的块级对象的百分比宽度和高度,也就是之前预留出来的正方形区域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值