每日两道前端面试题 - 20190202

栏目: Html · 发布时间: 6年前

内容简介:它们的定义1.块级元素:每个块级元素默认占一行高度,若有块级元素则同行无法再添加其他元素(float浮动除外)特点:

块级元素与行内元素,怎么用CSS控制它们、以及如何合理的使用它们

它们的定义

1.块级元素:每个块级元素默认占一行高度,若有块级元素则同行无法再添加其他元素(float浮动除外)

特点:

高度行高以及外边距内边距都可控制

宽度默认100%

可以容纳内联元素及块元素

2.行内元素:可以和其他元素都在一行上.

特点:

宽度就是它的文本或图片的宽度,不可改变

内联元素只能容纳文本或者其他的内联元素

设置宽度width无效

设置高度height无效,可通过line-height来设置

设置margin只有左右有效,上下无效

设置padding只有左右padding有效,上下无效

3.行内块状元素:综合了行内元素与块状元素的特性,但是各有取舍

特点:

不自动换行

能够识别宽高

默认排列方式从左到右

4.块级元素有哪些:

div | dl(定义列表) | h1(h开头系列) | hr | menu | ol | p | table | ul

5.行内元素有哪些:

a | b | br | em | i | img | input | label | select | span | strong

sub | textarea | u

6.行内块状元素有哪些:

button | del | iframe | ins | map | object

块级元素与行内元素,怎么用CSS控制它们、以及如何合理的使用它们,通俗讲解

1.首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也是传说中的流

每日两道前端面试题 - 20190202

由此可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后面,显然标准流已

经法满足需求,这就要用到浮动

浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。

假设上图中的div2浮动,那么它将脱离标准流,但是div1,div3,div4仍然在标准流当中所以div3会自动向上移动,占据div2的位置,重新组成一个流。

每日两道前端面试题 - 20190202

从图中可以看出,div2不再属于标准流,div3自动上移顶替div2的位置,div1,div3,div4依次排列,成为新的流,又因为浮动是漂浮在标准流上面的,所以div2挡住了一部分的div3,所以div3看起来变矮了。

如果把div2右浮动,我们看的是这个效果:

每日两道前端面试题 - 20190202

下面我们把div2和div3都加上左浮动,效果如图:

每日两道前端面试题 - 20190202

同理,由于div2,div3浮动之后,div3会跟随在div2之后,但是从以上的每个例子中,div2都是浮动的,但是却没有跟在div1之后,因此可以得到一个重要结论:

div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(若是一行放不下的情况,则会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部是和上一个元素的底部对齐。

假如我们把div2,和div4左浮动,效果图如下:

每日两道前端面试题 - 20190202

结论依然是:div2,div4浮动,脱离了标准流,因此div3将会自动上移,与div1组成标准流。div2发现上一个元素是标准流的元素,因此div2相对垂直位置不变,与div1底部对刘。div4发现上一个元素div3也是标准流中的元素,因此div4的顶部与div3的底部对齐。

恭喜你已经掌握了添加浮动.

现在我们来聊一下清除浮动,有上边的基础清除浮动非常理解

语法:clear: none | left | right | both

none:允许两边都有可以有浮动对象

left:不允许左边有浮动对象

right:不允许右边有浮动对象

both:不允许有浮动对象

根据上边的基础,假如页面中只有两个元素div1,div2,他们都是左浮动,场景如下:

每日两道前端面试题 - 20190202

这时候使用清除浮动,根据官方定义,读者可能会尝试这样写,在div1中的样式中添加clear:right,理解为不允许div1的右边有浮动元素,由于div2是浮动元素,因此会自动下移一行来满足规则。

其实这种理解是不正确的,这样做没有任何效果。

对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。

怎么理解呢?就拿上边的例子来说,我们是想让div2移动,但我们却是在div1元素的CSS样式中使用了清除浮动,试图通过清除div1右边的浮动元素 (clear:right;)来强迫div2下移,这是不可行的,因为这个清除浮动是在div1中调用的,它只能影响div1,不能影响div2。

根据定论,要想让div2下移,就必须在div2的CSS样式中使用浮动。本例中div2的左边有浮动元素div1,因此只要在div2的CSS样式中使用clear:left;来指定div2元素左边不允许出现浮动元素,这样div2就被迫下移一行。

对于右浮动也亦是如此。

参考: http://www.cnblogs.com/iyangy...


以上所述就是小编给大家介绍的《每日两道前端面试题 - 20190202》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby on Rails Tutorial

Ruby on Rails Tutorial

Michael Hartl / Addison-Wesley Professional / 2012-8-6 / USD 44.99

"Ruby on Rails(TM) Tutorial by Michael Hartl has become a must-read for developers learning how to build Rails apps." -Peter Cooper, Editor of Ruby Inside Using Rails, developers can build web applica......一起来看看 《Ruby on Rails Tutorial》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具