【CSS篇】简化版

(1)     CSS盒模型

CSS盒模型

题目:谈谈你对CSS盒模型的认识

1)       基本概念:标准模型+IE模型

2)       标准模型和IE模型的区别

计算宽度和高度的不同

3)       CSS如何设置这两种模型

4)       JS如何设置获取盒模型对应的宽和高?

JS怎么写才能拿到盒模型对应的宽和高呢?

5)       实例题(根据盒模型解释边距重叠)

6)       BFC(边距重叠解决方案) 或者IFC

详细解读:

1)       基本概念:标准模型+IE模型

2)       标准模型和IE模型的区别

标准模型的宽度指的就是content的宽度,不包含padding 和 border。

IE模型的宽高是计算padding和border的。如果设置宽度为200px,那么对于IE模型来说,它的200px是包含padding和border。

3)       CSS如何设置这两种模型?

box-sizing: content-box;

4)       JS如何设置获取盒模型对应的宽和高?

dom.style.width/height

dom.currentStyle.width/height(这个属性只有IE支持)

window.getComputedStyle(dom).width/height(这个属性所有浏览器都支持)

dom.getBoundingClientRect().width/height(计算绝对位置)

5)       实例题(根据盒模型解释边距重叠)

6)       BFC(边距重叠解决方案) 或者IFC

6-1)BFC的基本概念

块级格式化上下文

6-2)BFC的原理

在BFC的垂直方向的边距会发生重叠

BFC的区域不会与清除浮动的区域发生重叠

计算BFC的高度的时候,浮动元素也会参与计算。

BFC不与float重叠

BFC子元素即使是float也会参与高度计算

6-3)如何创建BFC

overflow: hidden;

float的值不为none

position的值不是 static

display的是table

6-4)BFC的使用场景

* 什么是 BFC

BFC(Block Formatting Context)格式化上下文,是 Web 页面中盒模型布局的 CSS 渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。

* 形成 BFC 的条件

* 浮动元素,float 除 none 以外的值

* 定位元素,position(absolute,fixed)

* display 为以下其中之一的值 inline-block,table-cell,table-caption

* overflow 除了 visible 以外的值(hidden,auto,scroll)

* BFC 的特性

* 内部的 Box 会在垂直方向上一个接一个的放置。

* 垂直方向上的距离由 margin 决定

* bfc 的区域不会与 float 的元素区域重叠。

* 计算 bfc 的高度时,浮动元素也参与计算

* bfc 就是页面上的一个独立容器,容器里面的子元素不会影响外面元素。

(2) 面试总结【css篇】- css选择器以及优先级

优先(优先级为): !important > 内联样式 > #id > .class > tag > * > 继承  > 默认 。

当选择器的权重相同时,它将应用于就近原则。

权重的计算方式:

-----------------------------------------------------

来源: MDN web docs

不同种类的CSS选择器:

选择器可以被分为以下类别:

- 简单选择器 (Simple selectors):通过元素类型、class 或 id 匹配一个或多个元素。

- 属性选择器 (Attribute selectors) : 通过 属性 / 属性值 匹配一个或多个元素。

- 伪类 (Pseudo-classes) :匹配处于确定状态的一个或多个元素,比如被鼠标指针悬停的元素,或当前被选中或未选中的复选框,

或元素是DOM树中一父节点的第一个子节点。

- 伪元素(Pseudo-elements) : 匹配处于相关的确定位置的一个或多个元素,例如每个段落的第一个字,或者某个元素之前生成的内容。

- 组合器(Combinators) :这里不仅仅是选择器本身,还有以有效的方式组合两个或更多的选择器用于非常特定的选择的方法。

例如,你可以只选择divs的直系子节点的段落,或者直接跟在headings后面的段落。

- 多重选择器(Multiple selectors) :这些也不是单独的选择器; 这个思路是将以逗号分隔开的多个选择器放在一个CSS规则下面,

以将一组声明应用于由这些选择器选择的所有元素。

-----------------------------------------------------

属性选择器:

(1) 存在和值 (Presence and value)属性选择器

这些属性选择器尝试匹配精确的属性值:

- [attr] : 该选择器选择包含 attr 属性的所有元素,不论 attr 的值为何。

- [attr=val] : 该选择器仅选择 attr 属性被赋值为  val 的所有元素。

- [attr~=val] : 该选择器仅选择具有 attr 属性的元素, 而且要求 val 值 是 attr 值包含的被空格分隔的取值列表里中的一个。

让我们看一个特别的例子,下面是它的HTML代码:

我的食谱配料: <i lang="fr-FR">Poulet basquaise</i>

<ul>

<li data-quantity="1kg" data-vegetable>Tomatoes</li>

<li data-quantity="3" data-vegetable>Onions</li>

<li data-quantity="3" data-vegetable>Garlic</li>

<li data-quantity="700g" data-vegetable="not spicy like chili">Red pepper</li>

<li data-quantity="2kg" data-meat>Chicken</li>

<li data-quantity="optional 150g" data-meat>Bacon bits</li>

<li data-quantity="optional 10ml" data-vegetable="liquid">Olive oil</li>

<li data-quantity="25cl" data-vegetable="liquid">White wine</li>

</ul>

和一个简单的样式表:

/* 所有具有"data-vegetable"属性的元素将被应用绿色的文本颜色 */

[data-vegetable] {

color: green;

}

/* 所有具有"data-vegetable"属性且属性值刚好为"liquid"的元素将被应用金色的背景颜色 */

[data-vegetable = "liquid"] {

background-color: goldenrod;

}

/* 所有具有"data-vegetable"属性且属性值包含"spicy"的元素,

即使元素的属性中还包含其他属性值, 都会被应用红色的文本颜色 */

[data-vegetable~="spicy"] {

color: red;

}

结果如下:

(2) 子串值 (Substring value) 属性选择器

这种情况的属性选择器也被称为"伪正则选择器",因为它们提供类似 regular expression 的灵活匹配方式(但请注意,这些选择器并不是真正的正则表达式):

-  [attr |= val] :选择 attr 属性的值是 val 或值以 val- 开头的元素(注意,这里的 "-" 不是一个错误,这是用来处理语言编码的)。

-  [attr ^= val] :  选择 attr 属性的值以 val 开头(包括 val)的元素。

-  [attr $= val] :  选择 attr 属性的值以 val 结尾 (包括 val)  的元素。

-  [attr *= val] :  选择 attr 属性的值中包含子字符串 val 的元素(一个子字符串就是一个字符串的一部分而已,例如, "cat" 是字符串 "caterpillar" 的子字符串)。

让我们继续我们前面的例子,并添加以下CSS规则:

/* 语言选择的经典用法 */

[lang |= "fr"] {

font-weight: bold;

}

/* 具有"data-vegetable"属性含有值"not spicy"的所有元素,都变回绿色*/

[data-vegetable*="not spicy"] {

color: green;

}

/* 具有"data-quantity"属性其值以"kg"结尾的所有元素 */

[data-quantity$="kg"] {

font-weight: bold;

}

/* 具有属性"data-quantity"其值以"optional"开头的所有元素 */

[data-quantity^="optional"] {

opacity: 0.5;

}

-----------------------------------------------------

伪类(Pseudo-class)

一个CSS伪类(Pseudo-class)是一个以冒号 (:)作为前缀,被添加到一个选择器末尾的关键字,当你希望样式在特定状态下才被呈现到指定的元素时,

你可以往元素的选择器后面加上对应的伪类(pseudo-class)。你可能希望某个元素在处于某种状态下呈现另一种样式,例如当鼠标悬停在元素上面时,

或者当一个复选框被禁用或被勾选时,又或者当一个元素是它在DOM树中父元素的第一个子元素时。

:active            :indeterminate         :only-of-type

:any               :in-range                  :optional

:checked       :invalid                     :out-of-range

:default          :lang()                      :read-only

:dir()              :last-child                 :read-write

:disabled       :last-of-type              :required

:empty          :left                           :right

:enabled       :link                          :root

:first              :not()                        :scope

:first-child      :nth-child()               :target

:first-of-type   :nth-last-child()       :valid

:fullscreen     :nth-last-of-type()    :visited

:focus            :nth-of-type()

:hover           :only-child

一个伪类(Pseudo-class)的例子:

<a href="#" target="_blank">百度一下</a>

一些样式:

/* 这些样式将在任何情况下应用于我们的链接 */

a {

color: blue;

font-weight: bold;

}

/* 我们想让被访问过的链接和未被访问的链接看起来一样 */

a:visited {

color: blue;

}

/* 当光标悬停于链接,键盘激活或锁定链接时,我们让链接呈现高亮 */

a:hover, a:active, a:focus {

color: darkred;

text-decoration: none;

}

-----------------------------------------------------

组合器和选择器组

虽然一次使用一个选择器就很有用,但在某些情形中却可能效率低下。 CSS选择器在你开始组合他们进行细粒度选择的时候变得更具使用价值。基于元素之间的相互关联关系,CSS提供了几种方法来对元素进行选择。下表使用连接符展示了这些关联关系(A和B代表前文所述的任意选择器):

css篇-简化版的更多相关文章

  1. BAT及各大互联网公司2014前端笔试面试题--Html,Css篇

    很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正 ...

  2. 面试题2:BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇

    BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内 ...

  3. BAT及各大互联网公司前端笔试面试题--Html,Css篇

    注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5931347.html )作者:wangwen896 整理分享出来希望更多的前端er共同进步吧,不仅适用 ...

  4. 高质量代码之HTML、CSS篇

    HTML篇 使用语义化标签<strong><fieldset><legend><ul>等等,少用<div><span> 判断网页 ...

  5. BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇

    BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 2014/08/03 · Web前端, 开发 · CSS, HTML, 技术面试 分享到: 188 MongoDB集群之分片技术应用 ...

  6. (转)BAT及各大互联网公司2014前端笔试面试题--Html,Css篇

    BAT及各大互联网公司2014前端笔试面试题--Html,Css篇   很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是 ...

  7. web前端面试试题总结---css篇

    CSS 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种, IE 盒子模型.W3C 盒子模型: (2)盒模型: 内容(content).填充(padding).边界(m ...

  8. CSS篇(上)

    紧接着HTML篇的CSS篇开啦,老铁们快来围观... 1.介绍一下标准的CSS盒子模型?低版本IE的盒子模型有什么不同? 1>有两种:IE盒子模型      W3C盒子模型 2>盒模型:内 ...

  9. 浏览器兼容性汇总--CSS篇

    目录 CSS篇 1.       cursor:hand   VS   cursor:pointer 2.        innerText在IE中能正常工作,但在FireFox中却不行 3.     ...

随机推荐

  1. 兼容ie浏览器的方法

    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法   最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,f ...

  2. JS实现上传图片的三种方法并实现预览图片功能

    地址:http://www.jb51.net/article/118660.htm js HTML5拖拽图片预览 地址:http://www.jb51.net/article/88803.htm js ...

  3. 阿里巴巴高级Java面试题(首发,70道)

    整理的70道阿里的Java面试题,都来挑战一下,看看自己有多厉害.下面题目都带超详细的解答,详情见底部. 1.java事件机制包括哪三个部分?分别介绍. 2.为什么要使用线程池? 3.线程池有什么作用 ...

  4. MATLAB之画确定区域内互不接触的球

    MATLAB之画确定区域内互不接触的球 程序要求:在确定区域内,画互不接触的球 输入:球的个数N,半径D,两球之间的最小距离K倍(D的倍数) 输出:各圆心的三维坐标,并作图显示 程序: functio ...

  5. python2和python3编码

    python2编码 unicode:unicode 你好 u'\u4f60\u597d' | | | | encode('utf8')| |decode('utf8') encode('gbk')| ...

  6. python 多进程队列数据处理

    # -*- coding:utf8 -*- import paho.mqtt.client as mqtt from multiprocessing import Process, Queue imp ...

  7. 针对类别的5中softmax_cross_entropy loss计算

    # ---------------------------- #! Copyright(C) 2019 # All right reserved. # 文件名称:xxx.py # 摘 要:五种方式实现 ...

  8. java命令-jstat/ javap

    jstat命令对应用程序资源和性能进行实时监控 常用参数列举如下: 1. jstat -class pid 显示加载class的数量.所占空间.所耗时间等信息 2.jstat -compiler pi ...

  9. 第07章 JdbcTemplate

    第07章JdbcTemplate 1. 概述 为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架. 作为Spring JDBC框架的核心,JDB ...

  10. Dubbo底层原理

    dubbo 1. 依赖 spring扫描注入 2. 反射 3. 动态代理 4.Zookeeper 5.netty 服务不在本地,具体实现在远程  可以用Dubbo 基于XML 效率低 传输低  解析低 ...