问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于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% 。

这个方法相比原来图片的等比缩放,有个优点:无论图片是否加载成功,容器高度始终是计算完成,不会造成页面抖动,也不会造成页面重绘,从而提升性能。

下面看看这种情况下,图片加载成功和失败的对比:

25491da44dc799ec34c7ddac107ef5d.png

三、实现方法2 - 通过子元素 padding 实现

通过设置子元素的 padding 属性来实现,是比较常用,也是效果比较好的一种,这里需要理解的是: 子元素的 padding 属性百分比的值是先对父容器的宽度而言 。

这里看下面代码和效果图理解下:

HTML代码:

<div class="box">
 <div class="text">我是王平安,pingan8787</div>
</div>

css代码:

.box{
 width: 200px;
}
.text{
 padding: 10%;
}

419fa51a533fd4bd28e47da8a7498f0.png

分析:

这里我们将父容器 .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试一下,不行了就用百分比吧。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
妇科的止血药有哪些 妇科用的止血药有哪些 妇科止血药的功效 人艰不拆是啥意思 汉酱51 度酱香型白酒多少钱?味道怎么样? 穿凉鞋可以穿袜子吗?凉鞋发黄怎么变白? 爱奇艺vip投屏限制怎么办 爱奇艺vip投屏视频限制怎么解决 支付宝怎样解除关联的支付宝账号? 剑圣叫什么名字 ...政策?这个政策的目的是什么?会对经济有什么影响? 三国中最强的三位奇才,为何都英年早逝呢? 自测手指血糖正常值是多少 oppo怎么保存不了微博图片?我是oppoa51的 天妒英才,聪明至极的曹冲为何年仅13岁就离奇去世? 《射雕英雄传》小说中的王重阳,他为何会英年早逝? 人的正常的血糖是多少? 形容折寿的成语 指尖血糖的正常值是多少在什么时候测 霍金21岁全身瘫痪,婚后是怎样生出3个孩子的? oppo微博动图怎么保存 血糖正常值? 这西汉的皇位,为何兜转多年后又回到了卫子夫的后代手里? 手指测血糖饭前饭后正常值是多少 曹雪芹如果不坚持写完《红楼梦》,是不是结局就没那么悲伤? 甘罗12岁就当了宰相,他最后的结局是什么呢? 三国时期有四位非常出名的神童他们的结局怎样呢? 公认的神童有哪些?智力超群却天妒英才,为何没人能成年? 曹操的儿子中哪个最有才华呢? 太过聪明容易早死用文言文怎么说? 体现纳兰性德 品质的诗句、并写出表现了什么、~~ 康熙身边的“御用文人”,都将其奉为大清时期的李白,为何却早死了? 料事如神的郭嘉,为何仅仅活到38岁就死了? 正常血糖是多高 餐后2小时血糖正常值是多少如果2小时之内喝过糖水,血糖可以测试吗 oppo u705t 为什么不能保存微博里面下载的图片了 为什么三国时期的那些神童,后来的结局都不太好? 吃完海鲜后怎么迅速去除手上的腥味? 餐后2小时血糖多少算正常呢? 健康人的血糖标准是多少?什么是二型糖尿病? 您好!我饭后两小时测得指尖血糖5.7,医生说血糖很低,说正常值是:7到10,她的说法正确吗?网上各种说法 餐后2小时,手指血糖9.6算糖尿病吗 我餐后两小时指尖血糖为5,4MMO是否为正常值谢谢 空腹指尖血血糖正常值是多少,如果是5.9正 餐后4小时血糖6.4正常吗? 支付宝怎么没有征信授权 末梢血的正常值多少 打完胰岛素糖尿病餐后血糖正常值范围 有什么办法可以去除手上的鱼腥味? 我支付宝逾期为啥征信报告没有 血糖仪自测血糖的正常值是多少啊,空腹,餐后一小时