CSS 规避脱标之两种用法
大家好,我是小强老师,今天讲解一小点知识哈
对比了才知道什么好

看不出,很漂亮吧!

有木有倾国倾城的美色。
呵呵,好多东西也是这样的,好的东西只有对比了才觉得好。
我们知道我们网页布局 有三模式。 普通流 normal flow (标准流、常规流) 浮动(float) 和 定位 (position)
标准流
标准流实际上就是一个网页内标签元素正常排列的顺序的意思;比如块级元素会独占一行,行内元素会按顺序依次前后排列;按照这种大前提的布局排列之下绝对不会出现列外的情况叫做标准流布局;
这种布局,我们还是比较喜欢的,因为他是默认的布局模式,稳定, 浮动和 定位毕竟是脱标的。会带来很多不方便。
因此,我们有些地方能用 标准流还是 可以避免用 浮动和 定位 ,我们称之为规避脱标。
这里举两个简单例子:
1. margin-left:auto;
假如要做下面的例子:

想要蓝色的小方块 到 红色盒子的右侧。 除了浮动和 定位
其实,我们可以用 margin-left:auto 就可以把蓝色小方块移动到右侧。
代码如下:
<!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 type="text/css">
.father{width:350px;height:45px; border:1px solid red; margin:100px auto;}
.son{width:15px;height:15px; background-color:#00F; margin-left:auto; margin-top:15px; margin-right:5px;}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>
就可以了。 auto 自动的意思, margin-left:auto 左侧外边距自动 充满 这样,把盒子挤到右侧了。
同时大家也明白了,以前我们写 margin: 0 auto; 为什么可以使块级有宽度和盒子居中对齐。 分开看,就是 margin -left:auto;
margin-right:auto ; 当然上下margin 为0; 左侧自动充满, 右侧也自动充满, 盒子 保证左侧有 自动,右侧也有自动,就在中间了。
当然了,这个元素只能是块级元素 并且左侧不能用其他元素了。这是使用的限制。但是如果遇到了这种情况,我们知道有这种写法就好了。
2. vertical-align:middle;
大家看下面的案例怎么做?

注意红色方块, 必须要有大小的,因为以后要填写背景图片的。
因为后面还有文字,再同一行上,你可能想到浮动或者定位。
其实这里我们用 行内块 + vertical-align:middle 更合适,因为没有脱标,用的标准流。
<!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 type="text/css">
*{margin:0;padding:0}
h2{width:240px; margin:100px auto; border:1px solid red; font-size:14px; line-height:35px;}
h2 s{
display:inline-block;
width:15px;
height:15px;
background-color:#930;
vertical-align:middle;
margin:-3px 5px 0;
}
</style>
</head>
<body>
<h2><s></s>我的标题</h2>
</body>
</html>
行内块 + vertical-align 可是两个好基友哦,他们一起使用非常的方便。两者同时出现,vertical-align的本质上是个独立的个体,与后面的line水平的元素是不存在直接的关系的。 可以随意的移动这个红色方块上下位置而不会引起 文字的移动。
来看看淘宝的做法吧:

CSS 规避脱标之两种用法的更多相关文章
- CSS——规避脱标流和vertical-align
规避脱标流: 1.尽量使用标准流. 2.标准流解决不了的使用浮动. 3.浮动解决不了的使用定位. 问题解决:嵌套盒子在不使用定位的情况下定位到右上角 <!DOCTYPE html> < ...
- CSS.05 -- 规避脱标 定位的盒子居中、CSS标签规范、溢出隐藏、内容移除(网页优化)、CSS精灵图
规避脱标 定位的盒子居中显示 Margin:0 auto : 只能让标准流的盒子居中对齐 当A是B的父系,B可以使用 margin-left:auto: 来获得相当于定位right:0:的效果 M ...
- 李洪强和你一起学习前端之(9)规避脱标,CSS可见性,滑动门案例
1 复习昨天知识 1.1 浮动 特点: >浮动的元素不占位置(脱标) >可以将行内元素转化为行内块元素 >块级元素在一行上显示 >设置了浮动的元素,影响其后面的元素 作 ...
- css划隔横线的两种方法
css划隔横线的两种方法 方法一:用DIV,代码如下:(推荐此方法) <div style="width:800px;height:1px;margin:0px auto;pa ...
- c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast
C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...
- operator 的两种用法
C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).1.操作符 ...
- Service的两种用法及其生命周期
先来一点基础知识: Service 是android的四大组件之一,与Activity同属于一个级别,它是运行在后台进行服务的组件(例如在后台播放的音乐,播放音乐的同时并不影响其他操作).Servic ...
- JSP中的include的两种用法
1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用法区别 (1)执行时间上区别 < ...
- 子查询。ANY三种用法。ALL两种用法。HAVING中使用子查询。SELECT中使用子查询。
子查询存在的意义是解决多表查询带来的性能问题. 子查询返回单行多列: ANY三种用法: ALL两种用法: HAVING中的子查询返回单行单列: SELECT中使用子查询:(了解就好,避免使用这种方法! ...
随机推荐
- web压缩gzip响应
String data = "ggrgrgw4gergergregerge"; byte b[] = data.getBytes(); String gzipValue = req ...
- oracle整体知识的大致介绍(1)-概念
表空间: oracle允许不同类型的数据分开存放,表空间是数据库的逻辑划分. 数据文件: 表空间由同一磁盘上的一个或多个文件组成,这些文件叫做数据文件. 实例: 是存放和控制数据库的软件机制. ora ...
- centos 环境下monolog+php 方案
1.在项目中,日志系统有多重要详细所有程序员都知道,monolog就是一个最好的解决方案,有各种级别,各种日志存储方式,具体可以上monolog官方了解http://monolog.ow2.org/ ...
- [置顶] c++播放Flash文件
最近由于需要在程序中使用Flash播放,所以学习了下如何播放Flash,这里使用atl库中的CAxWindow来处理我们要播放的Flash!由于Flash的很多接口我们都不知道,所以可以参考前一篇文章 ...
- http://blog.csdn.net/baimafujinji/article/details/10931621
书接上文,本文章是该系列的第二篇,按照总纲中给出的框架,本节介绍三个中值定理,包括它们的证明及几何意义.这三个中值定理是高等数学中非常基础的部分,如果读者对于高数的内容已经非常了解,大可跳过此部分.当 ...
- DontDestroyOnLoad(Unity3D开发之五)
Unity中我们从A场景切换到B场景的时候,A场景全部对象都会销毁,但有时候我不须要销毁某些东西. 比方一个简单的游戏的背景音乐,我不须要多次反复创建,多个场景播放这一个即可了.这个时候就须要用到Do ...
- MemberShip使用大全
比较全面的membership 使用过程 http://www.cnblogs.com/xlb2000/archive/2010/07/31/1788120.html Membership中创建的数据 ...
- Java学习01
Java学习01 第一章 1.JRE与JDK JDK(JAVA Develop Kit,JAVA开发工具包)提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者; J ...
- Android——用户登陆及用户名和密码的保存
Android——用户登陆及用户名和密码的保存 在之前的学习过程中已经将Android学习完了,但是在后面将近一年的时间里都没有进行过Android开发,所以对Android的所有的知识点又有点忘 ...
- python中的map,filter,zip函数
map() Return an iterator that applies function to every item of iterable, yielding the results 例如: a ...