我们来看一个例子:
浏览器效果图:
这时会发现父元素会自动调整自身的大小来包含子元素。
如果包含元素定义了高度和宽度则他不会随子元素的大小而自动调整自身显示区域来适应子元素的显示。注意,在IE6及更低版本浏览器中包含框仍然能够自动调整自身大小来适应子元素的显示大小,不过在IE7版本中微软纠正了这个不符合标准的显示方法。如下
示例:
浏览器效果图:
默认状态下溢出不隐藏,我们可以添加 样式 overflow:hidden隐藏多余的部分或overflow: scroll多余部分显示滚动条。
如果把浮动元素嵌入到流动元素之内,则父元素不能够自适应子元素的高度,
如下示例:
浏览器效果图:
在上图中可以看到包含元素div并,没用显示。原因就是包含元素没有适应子元素的高度,而是根据自身定义的属性以独立的形式显示(父元素没有被撑开,仅收缩成一条直线显示)。所以,在应用混合嵌套式,要预测到浮动与流动混合布局时会出现的各种怪现象,并积极做好兼容处理。
解决方法:可以在包含元素内的最后一行添加一个清除元素,强制撑开包含元素,使其包含浮动元素。
示例如下:
浏览器效果图:
本文章参考书籍:HTML5+CSS3+JavaScript从入门到精通(标准版)未来科技 编著
CSS结构好的话,没有必要使用过多的类或者标识选择符。这是因为你可以指定在选择符内的选择符,而不必使用CSS嵌套。(或者更好的说法,上下文选择符--译者著)
1、比如:
ExampleSourceCode#top{ background-color:#ccc padding:1em } #toph1{ color:#ff0 } #topp{ color:red font-weight:bold }
2、这就减去不必要的类或者标识选择符,如果应用到像这样的HTML中:
ExampleSourceCode<dividdivid="top"> <h1>Chocolatecurry</h1> <p>Thisismyrecipeformakingcurrypurelywithchocolate</p> <p>Mmmmmmmmmm</p> </div>
这是因为,用英文半角空格间隔选择符,我们指明了在标识id内的h1有“#ff0”的颜色,而p则是红色red和粗体bold。这可能也会有些复杂(因为可能不止两级,比如在内在内在内在内等等)。有必要多加练习。
1、 元素类型的转换(display属性)
Display属性
属性值:
Block
Inline
None
大部分块状元素默认的display的值为block,其中li默认的值 list-item(列表元素)
大部分内联元素默认的display值为inline,其中input默认的值为:inline-block(行内块元素);
内联元素里面特殊的一个:行内块元素(内联块元素)
特点:
1:可以设置宽高
2:在一行内逐个显示
3:当前元素的display的值为inline-block能支持vertical-align 属性。
2、 vertical-align属性
vertical-align:垂直对齐。
Top
Bottom
Middle
Baseline
让一个元素在父元素里面左右上下居中:
给父元素添加text-align:center(左右居中)
给当前元素添加:
Display:inline-bolck
Vertical-align:middle
在当前元素后面(不要回车),添加一个空的span标签。
给span设置样式:
Display:inline-block
Width:0
Height:100%
Vertical-align:middle
3、 css元素类型的分类总结
分类:块状元素、内联元素、可变元素
元素类型的转换:
Display属性:
属性值:
Block
Inline
Inline-book
None
List-item
行内块元素:input display为inline-blcok1Img标签:浏览器默认解析的display值为inline
标签的嵌套规则:
尽量让块状元素作为父元素存在;
内联元素的子元素尽量也是内联元素;
P标签中不能出现h1-h6;
P标签和h1-h6不能互相嵌套。
4、 图片默认的display属性值为inline,为什么图片能添加宽高???
从另一个角度对所有的标签进行分类。
分为:置换元素与非置换元素
置换元素:
典型的置换元素:img/input 依赖标签的属性或者元素自身的类型;‘
因为img是置换元素,所以能添加大小。因为置换元素在页面显示的过程中,生成一个框(框架),这个框能添加大小。
非置换元素:
不是置换元素的都是非置换元素。
5、 定位
定位:让元素的位置发生改变。
定位属性:
Position属性:设置或者检索元素定位方式。
(如果元素有了position属性,元素就知道自己要做位置移动了)
Position的属性值:(属性值是告诉元素参照物是谁)
制定坐标:left/right/top/bottom
Position的属性值:
1:position:static 【静态定位】 (position的默认值)
2:position:absolute 【绝对定位】
a. 绝对定位的参照物:
已经有定位的父元素为参照物
如果父元素都没有定位或者没有父元素,以文档为参照物
b. 绝对定位的特点:
不占据空间,脱离布局流。