css实现两个div填满一行
有如下代码:
body{width: 100%;height: 100%;padding: 0;margin: 0;position: absolute;}#main{width: 800px;height: 300px;border: solid black 1px;position: absolute;}
<body>
<div id ="main"><div id="one"> dgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdg </div><div id="two"> 哈哈哈哈哈哈啊哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈 </div>
</div>
</body>
让#one和#two在#main中各占一半(占比多少都不重要)显示有哪些方法呢?
方法一:使用float浮动
#one{float: left;/*display: inline-block;*/width: 50%;height: 40%;word-wrap: break-word;border-bottom: 3px solid red;}#two{/*display: inline-block;*/float: right;position: relative;width: 50%;height: 40%;border-bottom: 3px solid green;}
上述方法不唯一,可以将one设置为float:left,two设置为float:right或display:inline-block;也可以将one设置为display:inline-block,two设为float:right;但是只同时设置为inline-block不设置float却不可以。这里要注意的是,width的80%和20%刚好能将100%的空间填满,所以如果两个区域设置了border-left/right,将不能在同一行显示。
注:元素设置float之后,该元素会脱离文档流,其周围元素会受到影响。
方法二:使用position定位和left:*px
#one{display: inline-block;position: relative; //可有可无width: 50%;height: 40%;word-wrap: break-word;border-bottom: 3px solid red; box-sizing:border-box; //存在border-left/right时或者padding时,使用border-box属性更好布局}
#two{ display: inline-block;position: absolute; width: 50%;height: 40%;left: 50%; //相对于父元素,左侧的80%宽度为#oneborder-bottom: 3px solid black;}
这里要说一下box-sizing属性,该属性用于规定带border或padding的盒子模型的表现形式,上述例子中,如果不设置box-sizing属性,在没有border-left/right以及padding的时候可以正常以百分比展示两个div,并且80%和20%的宽度不超出父元素;如果存在左右border或者左右padding,两个div在同一行显示出来就超出了父元素的大小。
我们知道盒子模型包含position值,margin值,border值,padding值,以及中间的内容区content值,所有宽高加起来构成了整一个盒子模型。如果定义一个div(盒子)的width和height,默认情况下(box-sizing:content-box)该宽高为内容区content的宽高,而不包含border,padding值。
而box-sizing的还有另一个属性值border-box,如果给div(盒子)设置了box-sizing:border-box,定义了width和height值,那么该宽高值就包含了content以及border,padding值的总和。即width = border-left + border-right + padding-left + padding-right ,通过已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。这样一来,为两个容器同时设置宽度50%,再设定padding值和border值,两个容器的宽度总和就刚好填满父容器,不会超出。
方法三:使用display:flex布局(父容器使用flex布局后,子元素的float、clear和vertical-align属性将失效)
使用flex布局可以说是个我个人很推荐的方法,因为flex弹性布局能实现的不仅仅是2个容器平分父容器宽高,理论上能实现n个容器平分父容器宽高(flex的能力还不只如此)。其兼容性如下:
display:flex布局在移动端是个很不错的选择,回归问题,首先看如何实现2个元素(内部div在父容器内称为元素)平分父容器:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title><style>#main{width: 800px;height: 300px;border: solid black 1px;display:flex;display: -webkit-flex;}#one{-webkit-flex: 1;flex: 1;height: 50%;background-color: yellow;}#two{height: 50%;-webkit-flex: 1;flex: 1;background-color: red;}#three{height: 50%;-webkit-flex: 1;flex: 1;background-color: green;}</style>
</head>
<body>
<div id="main"><div id="one">哈啊哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈啊哈哈</div><div id="two">哈啊哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈啊哈哈</div><!--<div id="three">哈啊哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈啊哈哈</div>-->
</div>
</body>
</html>
如上,父容器设定display:flex;弹性布局方式,内部元素设定flex值,父容器会将内部元素flex值进行加和,这里加和为2,就平分成2份,每个元素占有1份,即两个元素平分了外部容器宽度。
更多内容请参见阮一峰老师的: http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
css实现两个div填满一行相关推荐
- html怎么使图片自动填充,CSS怎么将img图片填满父容器div自适应容器大小
CSS怎么将img图片填满父容器div自适应容器大小 发布时间:2021-03-19 09:35:26 来源:亿速云 阅读:114 作者:小新 这篇文章将为大家详细讲解有关CSS怎么将img图片填满父 ...
- html两个div一个在前一个在后,html/css 两个div在同一行
在界面设计的时候,经常需要将两个div在同一行显示. 但是每次都会忘记怎么做,特此随笔,备忘. 如以下要将"第一个div"和"第二个div"显示在同一行: /* ...
- 让div填满剩下的空间
让div填满剩下的空间 方案一 一 如果parent是body div2{position:fixed;top:hpx;bottom:0; } 二 如果parent是div .parent{pos ...
- html中的高和宽背景色怎么写,css background-size与背景图片填满div
background-size与背景图片填满div 在开发中,常有需要将一张图片作为一个div的背景图片充满div的需求 background-size的取值及解释 background-size共有 ...
- html5 css背景图片满,css background-size与背景图片填满div
back和第,.年过事工宗据指数遍互业经搞断果会ground-size与背景图片抖要支圈者器说是事天开的.年后编定功口小发还应久剑填满div 在开发中,常分博累发口小定逻间框加题览果些屏洁动理应有需要 ...
- html添加背景图片并且填满div,css background-size与背景图片填满div(示例代码)
background-size与背景图片填满div 在开发中,常有需要将一张图片作为一个div的背景图片充满div的需求 background-size的取值及解释 background-size共有 ...
- CSS—两个div放在同一行
把两个div放到一个div中,然后给两个div的样式中加上style="float:left"即可
- 如何让两个div在同一行显示?一个float搞定
最近在学习div和css,遇到了一些问题也解决了很多以前以为很难搞定的问题.比如:如何让两个div显示在同一行呢?(不是用table表格,table对SE不太友好)其实,<div> 是一个 ...
- HTML如何使两个div在同一行
让两个div标签在同一行,需两个div的样式加上style="display: inline;" 记得两个都要加,因为块级元素前后都有换行符. <html> < ...
- HTML如何让两个div并排在一行,如何实现两个或多个div并列于一行
div是块状元素,默认是独占据一行. 但是,如何让两个或多个块区域并列于一行? 块状元素有一个很重要的"float"属性,可以达成这种效果.float 属性也被称为浮动属性,这个词 ...
最新文章
- 敏捷开发中如何使用看板方法创造价值
- R语言关联规则挖掘数据集预览、分析、筛选:项目数的分布形态(分位数、密度图)、itemFrequency函数统计每一项目在所有事务中出现的次数、最常发生的项目、数据筛选(交易的集合项目大于1)
- 暂无支持此机型的手机版本_华为AR地图发布重要更新版本 新增对8款机型的支持...
- There are no interfaces on which a capture can be done.
- 软件测试周记录之jmeter
- [Leetcode][第647题][JAVA][回文子串][动态规划][中心扩展][Manacher 算法]
- Kylin 2.0升级总结
- Unity UI和场景适配
- Struts2基本的执行过程
- JAVA CLASS混淆工具:Allatori 简单试用
- 7天连锁酒店郑南雁:顺势创业者无为管理人
- android 渐变蒙版_PPT教程 | 渐变蒙版
- Python使用-错误“name ‘requests‘ is not defined”的探查
- 中国水产科学研究院教授黄樟翰走进伊宅购集团考察伊家田园项目
- python test suite什么意思_在python中创建testsuite
- team viewer如何解绑设备
- python面对对象建立自己的电子宠物的编码_父与子的编程之旅:与小卡特一起学Python(第3版)(全彩印刷)...
- 国外计算机cpu排行,电脑处理器排行榜_电脑处理器排行榜最新2020
- 解析 通证经济的分类及用途
- C++ 进程间通信详解