CSS&HTML面经专题——(五)HTML&CSS场景题目 / CSS伪类与伪元素

147 阅读2分钟

一、不通过JS如何提交一个表单?

html5 form表单提交 type=“submit”

<form name=”form” method="post" action="#">
	<input type="submit" name="submit" value="提交">
</form>

二、不考虑其它因素,下面哪种的渲染性能比较高?

.box a{
    ...
}

a{
    ...
}
  • css的浏览器渲染机制是——选择器从右向左查询

  • CSS选择器匹配元素是逆向解析

    因为所有样式规则可能数量很大,而且绝大多数不会匹配到当前的 DOM 元素(因为数量很大所以一般会建立规则索引树),所以有一个快速的方法来判断「这个 selector 不匹配当前元素」就是极其重要的。

img 如果从【水果】也就是【左】方向开始找,我们就会找3次。但是如果从【橘子】开始找,我们只需要一次就好了。 这是一个最简单的例子,根据这个例子我们也能看出,我们子元素只能有一个父元素,但是父元素可以有一堆子元素,所以还是从子元素,也就是【右】方向找会节约时间。

三、伪类与伪元素有什么区别?

1、伪类

  • 更多的定义的是状态

    常见的伪类有

    :hover,

    :active,

    :focus,

    :visited

    :link

    :not

    :first-child

    :last-child等等。

  • 伪类其实是弥补了CSS选择器的不足,用来更方便地获取信息。

/*html*/
<ul>
    <li>11111</li>
    <li>22222</li>
</ul>   

/* 选择器不能直接选取第一个子元素
/ 伪类弥补了选择器的不足 */
//css
li:first-child {
    color: red;   
}

2、伪元素

  • 伪元素,不存在于DOM树中的虚拟元素,它们可以像正常的html元素一样定义css,但无法使用JavaScript获取

  • 常见伪元素有

    ::before

    ::after

    ::first-letter

    ::first-lineb等等。

  • 伪元素本质上是创建了一个虚拟容器(元素),我们可以在其中添加内容或样式。

/*html*/
<p>
    Hello, World
</p>
/*css*/
p::first-letter {
  color: red;
}
//最终结果:
<p>
    <span class="first-letter">H</span>ello, World
</p>
.first-letter {
  color: red;
}