关于css 中间的div 自适应的问题。急求!!!
发布网友
发布时间:2022-04-28 14:29
我来回答
共9个回答
懂视网
时间:2022-04-28 18:50
目标:
实现一个宽度自适应,高度为宽度一半的容器。
一、思考如何实现
这个问题类似于:我们在移动端页面,上面有一张宽度 100% 的图片,如果我们没设置高度,则图片会根据原有尺寸,等比缩放。
我们可以借助这个想法,根据元素高度,来为元素设置一个相应比例的高度即可。
(推荐教程:CSS入门教程)
二、实现方法1 - 通过 vw 视口单位实现
所谓 视口单位 (viewport units)是相对于视口(viewport)的尺寸而言, 100vw 等于视口宽度的 100% ,即 1vw 等于视口宽度的1%。
我们就可以利用这个特性,实现移动端的宽高等比自适应容器。
HTML代码:
<div class="box">
<img src="http://images.pingan8787.com/2019_07_12guild_page.png" />
</div>
css代码:
*{
margin:0;
padding:0
}
.box{
width:100%;
height:51.5vw
}
.box img{
width:100%;
}
为什么 .box 高度为 51.5vw 呢?
原因是图片原来的尺寸是 884 * 455 的宽高比例,即 455 / 884 = 51.5% 。
这个方法相比原来图片的等比缩放,有个优点:无论图片是否加载成功,容器高度始终是计算完成,不会造成页面抖动,也不会造成页面重绘,从而提升性能。
下面看看这种情况下,图片加载成功和失败的对比:
三、实现方法2 - 通过子元素 padding 实现
通过设置子元素的 padding 属性来实现,是比较常用,也是效果比较好的一种,这里需要理解的是: 子元素的 padding 属性百分比的值是先对父容器的宽度而言 。
这里看下面代码和效果图理解下:
HTML代码:
<div class="box">
<div class="text">我是王平安,pingan8787</div>
</div>
css代码:
.box{
width: 200px;
}
.text{
padding: 10%;
}
分析:
这里我们将父容器 .box 宽度设置为 200px ,子元素 .text 的 padding:10% ,因此 .box 的 padding 计算结果为 20px ;
接下来结合主题,我们利用这个原理,来实现等比例的问题:
HTML代码:
<div class="box">
<div class="text">
<img src="http://images.pingan8787.com/2019_07_12guild_page.png" />
</div>
</div>
css代码:
.box{
width: 100%;
}
.text{
overflow: hidden;
height: 0;
padding-bottom: 51.5%;
}
.box .text img{
width: 100%;
}
这里 .text 的 padding-bottom: 51.5%; 也是按照第一个方法,用图片原始尺寸的宽高比计算出来的,需要注意,这里将 .text 设置 height: 0; 会出现高度比实际高的问题,因此为了避免这个情况,就需要设置 height: 0; 。
相关视频教程推荐:css视频教程
热心网友
时间:2022-04-28 15:58
一、背景
在采用基于DIV+CSS的布局开发时,经常需要考虑各种浏览器版本的兼容性问题。
常用的布局模式主要包括:左中右、上中下,以及两种模式的结合。
在早期的开发,一般都采用Table标记的方式实现。
当尝试采用基于DIV的模式,发现一切都变的似乎没那么简单了。特别是浏览器的兼容性问题,更加突出了。
二、需求
本文只讨论上中下布局模式的实现,关于左中右模式的实现,相比较来说要简单得多了。如果时间充,我会另文详述。
1.上部(top)Div高度固定100px,宽度100%;
2.下部(footer)Div高度固定100px,宽度100%;
3.中部(middle)DIV高度根据屏幕高度,自适应充满,宽度100%;
4.用纯DIV+CSS实现,不采用脚本计算高度的方式;
5.调整浏览器大小时,中部DIV能随着屏幕高度自适应。
三、HTML部分
本部分非常简单,只是定义了三个DIV,分别对应:top、middle、footer
<div id="header">
抬头</div>
<div id="middle">
1页中<br />
2页中<br />
3页中<br />
4页中<br />
5页中<br />
6页中<br />
7页中<br />
8页中<br />
9页中<br />
</div>
<div id="footer">
页脚
</div>
四、CSS实现
为了便于理解实现原理,分两部分说明:
1.IE6下的实现
<style type="text/css">
*{
margin:0;
padding:0;
}
html,body{
padding:100px 0;
width:100%;
height:100%;
overflow:hidden;
}
#header{
position:absolute;
top:0;
width:100%;
height:100px;
background:#ccc;
line-height:100px;
text-align:center;
}
#middle{
position: relative;
top:-100px;
height:100%;
bottom:100px;
width:100%;
background:#ffc;
text-align:center;
overflow: auto;
}
#footer{
position:absolute;
bottom:0;
width:100%;
height:100px;
background:#ccc;
line-height:100px;
text-align:center;
}
</style>
2.IE7、IE8下的实现
<style type="text/css">
*{
margin:0;
padding:0;
}
html,body{
width:100%;
height:100%;
overflow:hidden;
}
#header{
position:absolute;
top:0;
width:100%;
height:100px;
background:#ccc;
}
#middle{
position: absolute;
top:100px;
height:auto;
bottom:100px;
width:100%;
background:#ffc;
text-align:center;
overflow: auto;
}
#footer{
position:absolute;
bottom:0;
width:100%;
height:100px;
background:#ccc;
line-height:100px;
text-align:center;
}
</style>
五、全部CSS代码
<style type="text/css">
*{
margin:0;
padding:0;
}
html,body{
padding:0 !important;
padding:100px 0;
width:100%;
height:100%;
overflow:hidden;
}
#header{
position:absolute;
top:0;
width:100%;
height:100px;
background:#ccc;
line-height:100px;
text-align:center;
}
#middle{
position: absolute!important;
top:100px!important;
height:auto!important;
position: relative;
top:-100px;
height:100%;
bottom:100px;
width:100%;
background:#ffc;
text-align:center;
overflow: auto;
}
#footer{
position:absolute;
bottom:0;
width:100%;
height:100px;
background:#ccc;
line-height:100px;
text-align:center;
}
</style>
参考资料:http://blog.sina.com.cn/s/blog_4b8d35b70100mfy2.html
热心网友
时间:2022-04-28 17:16
按常理是用js。
不过css也可以写判断语句的。
热心网友
时间:2022-04-28 18:51
支持IE6 IE7 IE8 FF
---------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
body{margin:100px 0px 0px 100px}
#body{width:500px;height:400px;background:#CCC; position:relative;overflow:hidden;}
#div1,#div3{width:auto;height:50px;_width:100%;}
#div1{background:#0FF}
#div3{ position:absolute;bottom:0px;left:0px;background:#000;right:0px;}
#div2{ position:absolute;top:50px;bottom:50px;left:0px;right:0px;background:#F00;_width:100%;_display:inline;height:auto;
_margin-bottom:-32767px;
_padding-bottom:32767px;}
</style>
</head>
<body>
<div id="body">
<div id="div1">1</div>
<div id="div2">2</div>
<div id="div3">3</div>
</div>
</body>
</html>
热心网友
时间:2022-04-28 20:42
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 你把这个自己改改就能用了,自己动手,下次不求人。Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>三列自适应等高且中列宽度自适应 - </title>
<style type="text/css">
a
.wrap
.left
.right
.center
.row
</style>
</head>
<body>
<div class="wrap">
<div class="left row"><a href="#"></a></div>
<div class="right row">
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
</div>
<div class="center row">
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<span style="float:right; position:relative;"> </span> <!--for ie6-->
</div>
</div>
</body>
</html>
tgFGGGffdddrgff
热心网友
时间:2022-04-28 22:50
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 你把这个自己改改就能用了,自己动手,下次不求人。Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>三列自适应等高且中列宽度自适应 - </title>
<style type="text/css">
a
.wrap
.left
.right
.center
.row
</style>
</head>
<body>
<div class="wrap">
<div class="left row"><a href="#"></a></div>
<div class="right row">
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
</div>
<div class="center row">
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<a href=""></a><br />
<span style="float:right; position:relative;"> </span> <!--for ie6-->
</div>
</div>
</body>
</html>
另外,站长团上有产品团购,便宜有保证
热心网友
时间:2022-04-29 01:15
你可以将第一个DIV写一个float:left(左浮动),再将第三个DIV写一个float:right(右浮动)第二个DIV如果没有超出3个DIV宽度相加之和,那么它自然在中间了,如果对你有帮助记得打分哦。
热心网友
时间:2022-04-29 03:56
没理解你的问题。。
我现在的理解是,你左右两边用漂浮的,中间那个块用绝对定位的,大的div不要加overflow:hidden;这样就不受大的div的影响,对各个浏览器兼容也没问题,。。。。有什么问题可以来74172429问我 小菜鸟追问给你个图示吧。是这样的。 一个大的div 是 500*400, 然后有 上中下 三个div包含在里面,上下的div 都是固定高度 宽度是width:100% ;也就是说 可以跟随总的div 伸缩. 然后中间的那个div呢, 是可以高度自适应.. 当然宽度也是可以自适应的,关键是 这个 中间自适应的问题. 高度可以跟随这总div(500*400) 变动, 假如高度变成800,也就是 500*800 ,中间的 也是可以随之变动的.要是不清楚的话我可以加Q:52392508 ,多谢了!
热心网友
时间:2022-04-29 06:54
第二个的width设置为auto试一下,不行了就用百分比吧。