样式布局与 BFC
一、几类视图
内联视图:inline
单行
块级视图:block
换行,有高度
行内块级视图:inline-block
单行,有高度
二、几类布局
块级布局
换行,通过设置 margin 水平居中
- <div class="center-block">...</div>
source:
- .center-block {
- display: block;
- margin-left: auto;
- margin-right: auto;
- }
浮动布局
单行,具有文字环绕(与内联元素之间),包裹性(与浮动元素之间。块级,可设置高度)与破坏性(与父元素之间,无高度),不完全脱离文档腔流(仍占据空间)。
- <div class="pull-left">...</div>
- <div class="pull-right">...</div>
source:
- .pull-left { float: left !important;
- }
- .pull-right {
- float: right !important;
- }
source:
- // Mixin itself
- .clearfix() {
- &:before,
- &:after {
- content: " ";
- display: table;
- }
- &:after {
- clear: both;
- }
- }
相关要点
①容器塌陷:
source:
- <div class="box-1">
- <button class="pull-right box-2">button 1</button>
- <button class="pull-right box-2">button 2</button>
- </div>
- <button class="box-3">button 3</button>
解决方案 —— 子元素全为浮动, box-1 为塌陷容器。为 box-1 添加 clearfix 或 bfc 或设定高度(不建议指定容器高度,建议由子元素撑开)
source:
- <div class="box-1 clearfix">
- <button class="pull-right box-2">button 1</button>
- <button class="pull-right box-2">button 2</button>
- </div>
- <button class="box-3">button 3</button>
附:style
- <style type="text/css">
- body {
- margin-top: 10rem;
- }
- .br-grey {
- border: 1px solid #ccc;
- }
- .br-blue {
- border: 1px solid blue;
- }
- .br-red {
- border: 1px solid red;
- }
- .box-1 {
- display: block;
- /*height: 10rem;*/
- width: 50rem;
- }
- .box-2 {
- display: inline-block;
- line-height: 2rem;
- }
- .box-3 {
- display: inline-block;
- line-height: 2rem;
- }
- </style>
②将浮动元素单独封装在一起
目的—— 避免浮动元素与非浮动直接接触。把所有浮动的元素封装一层不会塌陷(并且不为浮动)的父容器。(括号里表示浮动的父容器虽然也不会塌陷,但不符合要求; 主动限定容器高度也不建议使用)
- <div class="bfc 或 clearfix">
- <div class="br-grey box-1 pull-left ">
- <button class="br-red box-2 pull-right">button 1</button>
- <button class="br-red box-2 pull-right">button 2</button>
- </div>
- </div>
- <button class="br-red box-3">button 3</button>
③若父容器同时包含浮动与非浮动元素
则只有非浮动元素会撑开容器,若父容器清除浮动,则所有元素都会撑开容器,并且以最高子元素为父容器最终高度。一个父容器中,,尽量保证子元素全部为浮动或非浮动元素,否则容易发生中心线错乱(因为不在一个流中)。
显示结果:
主动调整高度或框高,使得中心线高度一致
- .box-1 {
- display: inline-block;
- line-height: 5rem;
- width: 60rem;
- padding: 2rem;
- }
- .box-2 {
- display: inline-block;
- line-height: 5rem;
- }
- .box-3 {
- display: inline-block;
- line-height: 2rem;
- }
行内布局
单行,若设定 line-height 垂直方向自动居中。通过设定 text-align 元素将按一定顺序排列。
特点:
inline-block 与 block 元素都可以通过 text-align: center 水平居中。
如果父类 line-height 设的很高,可以使子元素垂直居中。或者 inline-block 之间是水平排列,以其中最大的行高为当前行高。
相关要点:
inline-block 相邻,如果有一方包含一个 block 块,则那一方的 高度被挤开。可能导致相邻的其它 inline-block 塌陷。解决方法是,将那个 block 添加浮动。
显示效果
- <div class="container">
- <div class="row">
- <div class="left">33</div>
- <div class="right">22
- <div class="block">This is a block</div>
- </div>
- </div>
- </div>
或者
- <div class="container">
- <div class="row">
- <div class="left">33</div>
- <div class="right">
- <div class="block">block</div>22
- </div>
- </div>
- </div>
附 style
- <style>
- .left {
- display: inline-block;
- }
- .right {
- display: inline-block;
- }
- .block {
- display: block;
- height: 80px;
- width: 50px;
- }
- </style>
定位布局
-- relative
相对于元素自身最初位置进行偏移,偏移后位置跟最初位置相关联,即最初位置若受其他元素影响,会导致偏移后位置受关联影响。
-- absolute
相对于父类非默认定位,即设置了('absolute'、'relative' 或者 'fixed')父类元素进行偏移,如果都没有,则相对于 body 进行偏移。绝对脱离文档流。
三、BFC
四、相关布局实例
① 绝对定位实现单个元素垂直居中
a 一般用法
- .element {
- width: 600px; height: 400px;
- position: absolute; left: 50%; top: 50%;
- margin-top: -200px; /* 高度的一半 */
- margin-left: -300px; /* 宽度的一半 */
- }
b css3 用法
- .element {
- width: 600px; height: 400px;
- position: absolute; left: 50%; top: 50%;
- transform: translate(-50%, -50%); /* 50%为自身尺寸的一半 */
- }
c 特殊用法
- .element {
- width: 600px; height: 400px;
- position: absolute; left: 0; top: 0; right: 0; bottom: 0;
- margin: auto; /* 有了这个就自动居中了 */
- }
② 行内布局实现多元素垂直居中
- <ul class="tch-menu">
- <li>序号</li>
- <li>用户名</li>
- <li>真实姓名</li>
- <li>所在地域</li>
- <li>院校工<br/>作单位</li>
- <li>法律职业资格证书</li>
- <li>联系电话</li>
- <li>提交时间</li>
- <li>审核人</li>
- <li>状态</li>
- <li>操作</li>
- </ul>
附 style
- .tch-menu {
- display: inline-block;
- background-color: #FAFCFC ;
- font-size: 14px;
- padding: 4px 0;
- letter-spacing: -3px; /*消除行内布局间隔*/
- }
- .tch-menu li{
- vertical-align: middle;
- display: inline-block;
- text-align: center;
- min-width: 80px;
- word-wrap:break-word;
- word-break:break-all;
- margin: 0;
- padding: 0;
- list-style: none;
- letter-spacing: 0; /*消除行内布局间隔*/
- }
实现效果:
③ 导航条浮动布局
方案 —— 内部全为浮动元素。为保证外部高度由子元素撑开并设定上下边距,需要清除浮动并设定 padding。
- <div class="br-grey box-1 clearfix">
- <button class="br-red box-2 pull-right">button 1</button>
- <button class="br-red box-2 pull-right">button 2</button>
- <button class="br-red box-3 pull-left">button 3</button>
- </div>
附:style
- .box-1 {
- display: block;
- width: 50rem;
- padding: 2rem;
- }
- .box-2 {
- display: inline-block;
- line-height: 2rem;
- }
- .box-3 {
- display: inline-block;
- line-height: 2rem;
- }
233
样式布局与 BFC的更多相关文章
- CSS 布局和 BFC
什么是 BFC 在一个Web页面的CSS渲染中,块级格式化上下文 (Block Fromatting Context)是按照块级盒子布局的.W3C对BFC的定义如下:浮动元素和绝对定位元素,非块级盒子 ...
- CSS布局基础——BFC
what's BFC? 第一次看到这个名词,我是拒绝的,css什么时候还有这个东西?于是迫不及待的google了一下,才发现原来它无时无刻不在我们的css当中,只不过它并不是一个属性,不需要我们平常使 ...
- CSS+DIV网页样式布局实战从入门到精通 中文pdf扫描版
CSS+DIV网页样式布局实战从入门到精通通过精选案例引导读者深入学习,系统地介绍了利用CSS和DIV进行网页样式布局的相关知识和操作方法. 全书共21章.第1-5章主要介绍网页样式布局的基础知识,包 ...
- 微信小程序开发:学习笔记[4]——样式布局
微信小程序开发:学习笔记[4]——样式布局 Flex布局 新的布局方式 在小程序开发中,我们需要考虑各种尺寸终端设备上的适配.在传统网页开发,我们用的是盒模型,通过display:inline | b ...
- CSS3与页面布局学习总结(四)——页面布局大全BFC、定位、浮动、7种垂直居中方法
目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...
- 分析CSS布局中BFC
1.什么是BFC BFC(Block Formatting Context,块级元素格式化上下文)是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和 ...
- CSS实现样式布局
使用CSS建站时,您肯定遇到过形形色色的布局问题,最后可能被搞得焦头烂额.本文的目的是让您的设计过程更为容易,当您遇到困难时为您提供快速参考. 1.有疑问,先验证 在调试时,先对您的代码进行验证往往能 ...
- common.css 值得学习的css样式布局
正常的项目当中,应当有一个common.css,就是把一些常用的样式,写入其中. 然后再结合一些特性的css,构造漂亮的页面. 下面欣赏一些海盗商城的common.css. /***样式初始化***/ ...
- 样式布局分享-基于frozen.js的移动OA
最近改造了公司移动OA的样式,改善了显示效果和用户体验,其中用到了腾讯的 frozen.js 框架,在此把布局代码分享给大家,希望大家可以用得上,具体效果如下图. Demo 百度网盘 下载地址 Git ...
随机推荐
- 论文笔记:Learning wrapped guidance for blind face restoration
这篇论文主要是讲人脸修复的,所谓人脸修复,其实就是将低清的,或者经过压缩等操作的人脸图像进行高清复原.这可以近似为针对人脸的图像修复工作.在图像修复中,我们都会假设退化的图像是高清图像经过某种函数映射 ...
- 强大的Resharp插件(转)
使用VS有段时间了,一直深深的折服于其强大的功能.之前一直听说有Resharp这个工具,小猪一直也没有太在意.直到今天…… 下载安装: http://www.jetbrains.com/resharp ...
- 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc (转)
[原文地址]http://www.cnblogs.com/liqingwen/p/5898368.html 序 本打算过几天简单介绍下组件 Spire.XLS,突然发现园友率先发布了一篇,既然 x ...
- GYM 100608G 记忆化搜索+概率 2014-2015 Winter Petrozavodsk Camp, Andrew Stankevich Contest 47 (ASC 47)
https://codeforces.com/gym/100608 题意: 两个人玩游戏,每个人有一个长为d的b进制数字,两个人轮流摇一个$[0,b-1]$的骰子,并将选出的数字填入自己的d个空位之中 ...
- mysql常用
查询表占用大小 select sum(DATA_LENGTH)+sum(INDEX_LENGTH) from information_schema.tables where table_schema= ...
- 十个推荐使用的 Laravel 的辅助函数
壹. array_dot() array_dot () 辅助函数允许你将多维数组转换为使用点符号的一维数组. $array = [ 'user' => ['username' => 'so ...
- Sprite子节点透明度不能跟随父节点变化的问题求解(转)
原出处忘记了. [已解决]Sprite子节点透明度不能跟随父节点变化的问题求解 自己封装了一个按钮控件,点击的时候封装了一些动作,其中有透明度的变化. 当点击发生的时候,Sprite本体执行正常,但是 ...
- open file /var/mobile/Media/DCIM 相册中获取到的视频地址使用 报错 视频文件不存在
从相册中获取到的视频地址 例如 file:///var/mobile/Media/DCIM/100APPLE/IMG_9876.MOV 后面再使用的时候报错 视频文件不存在 那是因为在ios10. ...
- vs2017打包安卓项目简述
1.使用vs2017创建安卓项目 2.选择Release模式编译项目 3.项目存档 4.签名分发 存档完成后,点击分发按钮进入如下界面 按要求输入签名信息 选择apk保存位置 5.分享apk文件 参考 ...
- Chrome浏览器自动填充<input>标签的密码
问题:登录页面登录时,Chrome浏览器保存了用户名和密码,在其他页面管理其他的账户和密码时,密码框先是显示正确的密码,然后一闪而过被覆盖. 原因:问了技术主管才得知,Chrome浏览器中的,保存用户 ...