用伪类实现一个div的宽度和高度是固定百分比

遇到一个题目:一个div宽度是固定百分比的情况下,如何设置高度是宽度的80%

看到题目的第一反应是用js控制,获取到div的宽度之后再用宽度的80%来设置div的高度,但是如何在不用js的情况下,只用CSS来实现呢

下面是示例代码:

HTML代码:

<div class="outer"></div>

CSS代码:

.outer{
    width: 30%;
    background: #eee;
}
.outer:after{
    content: ‘‘;
    display: block;
    padding-top: 80%;
}

效果如图:

上图中,宽度是高度的80%,那么实现原理是什么呢?

因为div的宽度是30%而没有设置高度,当设置div的伪类padding-top是80%时,本该以高度为标准的,但是没有高度便会默认以宽度为标准,

伪类的padding-top设置成80%便会把父元素撑开,此时div就算没有设置高度也会被撑开,并且高度是宽度的80%;

那么想实现一个响应式的正方形就容易多了,只要设置div的伪类padding-top是100%即可,这样div将一直是一个正方形

最后总结一下:padding-top & padding-bottom 这两个css属性,父节点没有固定高度,他们就会参照父节点的宽度来设置自己的百分比;

(组内大神总结出来的解决办法,by新手小白的记录)

时间: 2024-10-29 03:11:37

用伪类实现一个div的宽度和高度是固定百分比的相关文章

缩放窗口时随一个div宽度设置另一个div的宽度

1.获取页面的宽度 window.onresize=findDimensions;    function findDimensions() //函数:获取尺寸    {    //结果输出至两个文本框        $("#heightscrollbardivtwo").width($("#heightscrollbardiv").width()+22);    } 缩放窗口时随一个div宽度设置另一个div的宽度,布布扣,bubuko.com

关于Div的宽度与高度的100%设定

http://www.cnblogs.com/clare-zhang/archive/2011/08/26/2154220.html 正像你所知道的那样,设置DIV大小的有两个属性width和height,以前在学习DIV每次给DIV设置100%宽度或高度时都很迷惑,不明 确这个100%的宽度(高度)到底有多宽有多高?这个100%是从哪里得到的从哪里继承的?今天我们的话题就是有关div高度100%的问题! 其实,要弄懂div宽度|width100%.div高度|height100%到底是怎么实现

关于超链接的四个伪类的一个问题(顺序问题)

在使用超链接的伪类的时候,要使用如下顺序,否则其中的某些效果将会没有效果[注释:link和visited的顺序无所谓]a:link               设置a对象在未被访问前的样式表属性.a:visited    设置a对象在其链接地址已被访问过时的样式表属性. a:hover    设置对象在其鼠标悬停时的样式表属性. a:active    设置对象在被用户激活(在鼠标点击与释放之间发生的事件)时的样式表属性. 原因是:浏览器解释CSS时遵循的“就近原则”. 当几种情况冲突的时候,哪

设置div的宽度为父元素的百分比,高度为宽度的百分比

body { margin: 0 auto; width: 100%; /*清除display:inline-block元素换行符间隙*/ font-size: 0; text-align: center; } div { display: inline-block; width: 20%; background: green; font-size: 12px; position: relative; vertical-align: middle; } div:before { content:

关于伪类选择器中一个冒号和两个冒号的区别

在平时工作中用到伪类选择器的时候一个冒号和两个冒号貌似都是可以的,所以两者到底有什么区别呢,我们先来看下W3C关于CSS3选择器的规范中有一段描述: A pseudo-element is made of two colons (::) followed by the name of the pseudo-element. This :: notation is introduced by the current document in order to establish a discrimi

第十二节课,css伪类 (转)

一.特殊选择器 1.* 用于匹配任何的标记 2.> 用于指定父子节点关系 3.E + F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F 4.E ~ F 匹配所有E元素之后的同级元素F 5.名称[表达式] 5.1 E[att] 匹配所有具有att属性的E元素([att]获取所有的定义了att的标签:E[att=val] 匹配所有att属性等于“val”的E元素: 5.2 [att=val] 获取所有定义了att属性并且属性值等于val的标签: 5.3 [att^=val]获取所有定义了att

CSS3伪类和伪元素的特性和区别

本文转自:http://www.cnblogs.com/ihardcoder/p/5294927.html 今天复习css时发现::的css选择器,查了一下,知道有伪元素和伪类这件事,他们的区别是什么呢?很幸运已经有人总结好了! CSS3伪类和伪元素的特性和区别 前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其实上面提到的这些伪类和伪元素都是CSS1和CS

css中伪类和伪元素的区别

转载:http://www.cnblogs.com/ihardcoder/p/5294927.html CSS3伪类和伪元素的特性和区别 前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其实上面提到的这些伪类和伪元素都是CSS1和CSS2中的概念,CSS1和CSS2中对伪类的伪元素的区别比较模糊,甚至经常有同行将:before.:after称为伪类.CSS3

理解使用before,after伪类实现小三角形气泡框

先来理解before和after伪类的用法吧,before从字面上的意思可以理解为前面的意思,它一般和content属性一起使用,把内容插入在其他元素的前面,同理after的含义就是把内容插入到其他元素的后面了.先来看一个简单的demo,如下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> &