zoukankan      html  css  js  c++  java
  • 如何使用CSS绘制一个响应式的矩形

    背景:

    最近因为需要用到绘制类似九宫格的需求,所以研究了一下响应式矩形的实现方案。

    有如下几种方案:

    1. 使用js来设置元素的高度
    2. 使用vw单位  div {width: 50vw; height: 50vw;} 
    3. 使用伪元素设置padding的方式来实现正方形(也就是本次使用的方式)

    实现一个正方形

    1 .square
    2   position: relative
    3    100%
    4 
    5   &::before
    6     content: ''
    7     display: block
    8     padding-top: 100%
    1 <div class="square"></div>

    我们的做法就是使用伪元素的 padding-top: 100% 来撑开元素本身。

    因为 pading-top 与 padding-bottom 的百分比取值来自于元素的宽度,所以,设置值为100%就实现了我们想要的功能。

    实现更多的功能

    想要实现更多比例的形状,其实就是修改 ::before 中的 pading-top 或者 padding-bottom 的值即可。

     1 // 16: 9
     2 .square::before
     3   padding-top: (9 / 16 * 100%)
     4 
     5 // 4: 3
     6 .square::before
     7   padding-top: (3 / 4 * 100%)
     8 
     9 // 1: 2
    10 .square::before
    11   padding-top: 200%

    当然,上边的实现都只是一个简单的矩形,如果你的矩形里边还要有一些内容的话,需要给元素添加以下几个属性:

    1 .content
    2   position: absolute
    3   top: 0
    4   right: 0
    5   bottom: 0
    6   left: 0
    1 <div class="square">
    2   <div class="content">
    3     Awesome
    4   </div>
    5 </div>

    要注意的有以下几点:

    1. IE7-不支持
    2. 元素不要设置 height 以及 overflow: hidden 

    参考资料

    w3-padding

  • 相关阅读:
    qt运行编译按钮居然是灰色的
    suse linux服务器的常用命令
    windows 防火墙的bug
    烦恼核心
    System.Data.OleDb.OleDbException (0x80004005) 的问题
    c#利用批处理清理大目录
    Spider Studio 社区信息
    示例
    示例
    Spider Studio 新版本 (20140225)
  • 原文地址:https://www.cnblogs.com/jiasm/p/6206018.html
Copyright © 2011-2022 走看看