css实现宽高动态变化,生成正方形div的2种方式

在一些特殊的情况中,我们需要实现div随着页面放大缩小。
最近我遇到的一些问题就是在电脑上设计的时候,写死的宽高在浏览器上显示的时候一切正常,但是公司的60寸显示器上却是发生很大的变化,这都是分辨率的不同造成的影响。

这种一般的情况可以根据按照百分比来设置宽高,就可以解决不同分辨率显示的问题。

但是新遇到的一个需求中,需要在一个按百分比设置宽高的div a中,得到一个正方形div b。因为a的宽高在不同显示器上是不固定的,所以我们不能直接设置b ’width:100%;height:100%‘来解决这个问题,如果是简单的赋予相同的固定的高度宽度,在页面大小发生缩放的时候,布局会发生改变,也很影响整体的效果。

下面就是纯css生成正方形的3种方式:

这里写图片描述

html代码:

<body>

    <div style="height: 30%; width: 100%; background-color: yellow;position: relative;">

        <div style="background-color: red; width: 30%;padding-top: 30%;height: 0;">
            <b style="color: black;font-size: 34px;">通过padding实现的正方形</b></div>

        <div style="position: absolute;right:0;top:0;background-color: pink;width: 50%;height: 100%;">

            <div style="background-color: blue; height: 25vw; width: 50%;">
                <b style="color: white;font-size: 34px;">通过vw,vh实现的正方形</b></div>

        </div>

    </div>

</body>

1.根据padding属性实现正方形。

图中的左侧就是通过padding实现的正方形

padding的属性可能的值有四种类型:

这里写图片描述

这里写图片描述

根据组成可以看出padding-top的大小刚好等于宽度,所以在视觉上的效果就是一个正方形,用这种方式有一个不太方便的地方就是这个div中元素会被padding挤到div外。 后面可以用绝对定位的方式实现视觉上的效果。

2.利用vw、vh来实现正方形

在图中 右侧的蓝色正方形就是通过这个方法实现的。

1vw = 1% viewport width
1vh = 1% viewport height。

这里的viewport是指最大的窗口。

<div style="background-color: blue; height: 25vw; width: 50%;">
                <b style="color: white;font-size: 34px;">通过vw,vh实现的正方形</b></div>

这个div的父级容器的宽度是50%,所以自身的宽度相当于整个窗口的25%,换算成vw的单位就是25vw,所以height:25vw。这样也实现了正方形的效果,而且不会出现元素被挤出div的情况。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值