CSS面试题列表:
CSS面试题及详细答案140道之(1-20)
CSS面试题及详细答案140道之(21-40)
CSS面试题及详细答案140道之(41-60)
CSS面试题及详细答案140道之(61-80)
CSS面试题及详细答案140道之(81-100)
CSS面试题及详细答案140道之(101-120)
CSS面试题及详细答案140道之(121-140)
文章目录
-
-
-
- 21. 解释`nth-child()`伪类。
- 22. 如何创建一个三角形?
- 23. `transform`属性的主要用途是什么?
- 24. `transition`与`animation`有何区别?
- 25. 解释`keyframes`。
- 26. 如何让背景图片固定不动?
- 27. 解释`linear-gradient`函数。
- 28. 什么是伪类和伪元素?
- 29. 如何在CSS中实现圆角?
- 30. 解释`box-shadow`属性。
- 31. 在CSS中如何使用变量?
- 32. 解释一下`calc()`函数的作用。
- 33. 在CSS中如何设置字体图标?
- 34. 什么是CSS Sprites?它们的好处是什么?
- 35. 解释`content`属性的作用。
- 36. 什么是CSS Reset和Normalize.css?
- 37. 如何实现垂直居中的布局?
- 38. 解释`inherit`, `initial`, 和 `unset` 关键字的区别。
- 39. 如何创建一个带有圆角和阴影效果的按钮?
- 40. 解释`flex-grow`, `flex-shrink`, 和 `flex-basis`?
-
-
21. 解释nth-child()
伪类。
答:nth-child(n)
选择器用于匹配其父元素下的第n个子元素。可以使用公式如even
, odd
, 或者更复杂的表达式如2n+1
来选择特定模式的子元素。例如:
li:nth-child(2n) { background-color: lightgray; } /* 选择偶数项 */
22. 如何创建一个三角形?
答:可以通过设置宽高为0,并利用边框颜色和透明度来创建视觉上的三角形效果。例如,创建一个向右的三角形:
.triangle {
width: 0;
height: 0;
border-top: 50px solid transparent;
border-bottom: 50px solid transparent;
border-left: 100px solid black;
}
23. transform
属性的主要用途是什么?
答:transform
属性允许对元素执行旋转、缩放、倾斜或平移操作。例如:
div {
transform: rotate(45deg); /* 顺时针旋转45度 */
}
24. transition
与animation
有何区别?
答:transition
用于在状态改变时创建平滑过渡效果,适用于简单的动画;而animation
提供了更强大的功能,可以定义多个关键帧,创建复杂的动画序列。例如:
/* transition */
button:hover { transition: all 0.3s ease; }
/* animation */
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-20px); }
}
element { animation: bounce 2s infinite; }
25. 解释keyframes
。
答:@keyframes
规则用于定义动画的关键帧集合,描述动画从开始到结束的变化过程。例如:
@keyframes slidein {
from { margin-left: 100%; width: 300%; }
to { margin-left: 0%; width: 100%; }
}
26. 如何让背景图片固定不动?
答:使用 background-attachment: fixed;
属性可以让背景图片相对于视口固定,不会随页面滚动而移动。例如:
body {
background-image: url('image.jpg');
background-attachment: fixed;
}
27. 解释linear-gradient
函数。
答:linear-gradient()
函数用于创建线性渐变背景,可以从一个颜色平滑过渡到另一个颜色。例如:
div {
background: linear-gradient(to right, red, yellow);
}
28. 什么是伪类和伪元素?
答:伪类(如:hover
)用于定义元素的状态(如悬停状态),而伪元素(如::before
)用于插入虚拟内容或选择元素的部分内容(如首字母)。例如:
a:hover { color: blue; } /* 伪类 */
p::first-letter { font-size: 2em; } /* 伪元素 */
29. 如何在CSS中实现圆角?
答:使用 border-radius
属性可以轻松地给元素添加圆角。例如:
div {
border-radius: 10px; /* 所有角均为10px的圆角 */
}
30. 解释box-shadow
属性。
答:box-shadow
属性用于给元素添加阴影效果,可以设置水平偏移、垂直偏移、模糊半径、扩散半径及颜色。例如:
div {
box-shadow: 10px 10px 5px gray;
}
31. 在CSS中如何使用变量?
答:通过CSS变量(也称为自定义属性),例如:
:root {
--main-bg-color: #4d4e53;
}
body {
background-color: var(--main-bg-color);
}
32. 解释一下calc()
函数的作用。
答:calc()
函数允许你在CSS中执行简单的数学运算来确定属性值。例如:
div {
width: calc(100% - 100px); /* 宽度为100%减去100px */
}
33. 在CSS中如何设置字体图标?
答:通常使用Web字体(如Font Awesome)并通过@font-face
引入,然后使用伪元素或直接在HTML中添加相应的类名来显示图标。例如:
@font-face {
font-family: 'FontAwesome';
src: url('fontawesome-webfont.eot');
}
.icon {
font-family: 'FontAwesome';
content: "\f007"; /* 显示特定图标 */
}
34. 什么是CSS Sprites?它们的好处是什么?
答:CSS Sprites是一种将多个小图标合并成一张大图的技术,减少HTTP请求次数,从而提高页面加载速度。好处包括减少服务器负载和加快页面渲染速度。
35. 解释content
属性的作用。
答:主要用于:before
和:after
伪元素中,用于插入生成的内容。例如:
span::before {
content: "Before ";
}
36. 什么是CSS Reset和Normalize.css?
答:CSS Reset清除浏览器默认样式,使所有浏览器的默认样式一致;而Normalize.css保留有用的默认样式并标准化不同浏览器之间的差异,提供更一致的基础。
37. 如何实现垂直居中的布局?
答:可以使用Flexbox (align-items: center; justify-content: center;
) 或者Grid (place-items: center;
) 等方法。例如:
.container {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
38. 解释inherit
, initial
, 和 unset
关键字的区别。
答:inherit
继承父级属性值;initial
重置为默认值;unset
如果属性可继承则表现如同inherit
,否则如同initial
。例如:
div {
color: unset; /* 根据上下文决定是否继承 */
}
39. 如何创建一个带有圆角和阴影效果的按钮?
答:结合border-radius
和box-shadow
属性,例如:
button {
border-radius: 5px;
box-shadow: 0px 2px 5px rgba(0, 0, 0, .2);
padding: 10px 20px;
}
40. 解释flex-grow
, flex-shrink
, 和 flex-basis
?
答:这些是Flexbox中的属性:
flex-grow
:定义项目的放大比例,默认为0。flex-shrink
:定义项目的缩小比例,默认为1。flex-basis
:定义项目的基础大小,默认为auto
。例如:
.item {
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
}
No. | 大剑师精品GIS教程推荐 |
---|---|
0 | 地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】 |
1 | Openlayers 【入门教程】 - 【源代码+示例 300+】 |
2 | Leaflet 【入门教程】 - 【源代码+图文示例 150+】 |
3 | MapboxGL 【入门教程】 - 【源代码+图文示例150+】 |
4 | Cesium 【入门教程】 - 【源代码+综合教程 200+】 |
5 | threejs 【中文API】 - 【源代码+图文示例200+】 |