En el front-end moderno, las entrevistas tienen requisitos más bajos para la investigación de CSS, que difícilmente se pueden comparar con JavaScript, o incluso con un cierto tema de subdivisión de JavaScript.
Este artículo enumera varias preguntas de entrevista de CSS que se pueden usar para entrevistas de CSS en la mayoría de las empresas.
Para obtener más preguntas de la entrevista de CSS, puede ver Preguntas de la entrevista de CSS
modelo de caja
- Tema: Una breve descripción del modelo de caja CSS
El modelo de caja de CSS incluye principalmente los siguientes dos tipos, que se pueden configurar a través de la propiedad box-sizing :
content-box
: propiedad predeterminada. ancho contiene solo contenidoborder-box
:width contiene (contenido, relleno, borde)
Especificidad CSS (peso)
css specificity
Es decir, el peso del selector en css, descienden a su vez los siguientes tres tipos de selectores
id
selectores como#app
class
,attribute
ypseudo-classes
selectores , como.header
,[type="radio"]
y:hover
type
Selectores de etiquetas y selectores de pseudoelementos comoh1
,p
y::before
Entre ellos, los selectores comodín *
, los selectores combinados + ~ >
y los selectores de pseudoclase negados no tienen efecto :not()
en la prioridad.
Los estilos en línea adicionales <div class="foo" style="color: red;"></div>
y !important
(el más alto) tienen mayor peso
:not
El impacto de prioridad de - codepen puede ver que no tiene efecto en la prioridad:not
del selector
Especificidad de CSS: codepen puede ver que hay más de una docena de selectores de clase y ninguno de los selectores de identificación tiene un peso alto
Preguntas complementarias:
- 100 个 class 选择器和 id 选择器那个比较高
- 属性选择器和类选择器哪个权重较高
- 通配符选择器和元素选择器哪个权重教高
'+' 与 '~' 选择器有什么不同
-
+
选择器匹配紧邻的兄弟元素 -
~
选择器匹配随后的所有兄弟元素
z-index 与层叠上下文
z-index
高数值一定在低数值前边吗,div 层级如下所示
- A -> 3
- AA -> 1000
- B -> 4
- BB -> 10
代码见 zindex - codepen
不一定,更复杂的示例见 层叠上下文 - MDN
水平垂直居中
- 题目: 如何实现一个元素的水平垂直居中
- 代码: absolute/translate
宽高不定的块状元素水平垂直居中,可见以下示例
同时提供几种不同的思路:
- flex:
justify-content: center
align-content: center
- grid
place-items: center
- absolute/translate
position: absolute
left/top: 50%
transform: translate(50%)
- ##absolute/inset##
左侧固定、右侧自适应
- 题目: css 如何实现左侧固定300px,右侧自适应的布局
- 代码: 代码
提供 flex
与 grid
布局的两种思路
- flex:
- 左侧:
flex-basis: 200px
- 右侧:
flex-grow: 1; flex-shrink: 0;
- 左侧:
- grid
- 父容器:
grid-template-columns: 200px 1fr;
- 父容器:
.container
.left
.main
复制代码
.container {
display: grid;
grid-template-columns: 300px 1fr;
}
复制代码
三栏均分布局
También flex
proporcione grid
los dos esquemas de y
- doblar:
- Opcion uno:
flex: 1;
- Opción II:
flex-basis: calc(100% / 3)
- Opcion uno:
- red:
- contenedor padre:
grid-template-columns: 1fr 1fr 1fr
- contenedor padre:
Otra pregunta: ¿Cómo realizar el diseño dividido uniformemente de dieciséis columnas?
Cómo dibujar un cuadrado/rectángulo con largo y ancho fijos
La solución anterior era usar padding
. padding
Si un elemento se establece como un porcentaje, significa que el ancho del elemento principal se utiliza como punto de referencia.De acuerdo con este principio, se puede establecer la relación de aspecto. Pero, de hecho, el significado es limitado.Después de todo, ocupas el relleno y no hay área para el contenido.
Una solución moderna es utilizar la propiedad CSS de relación de aspecto: aspect-ratio
.
Cómo CSS evita los conflictos de estilo
1. Fórmula BEM:.home-page .home-page-btn
.home-page {
.home-page-btn {}
}
复制代码
BEM tiene una deficiencia, es decir, es demasiado largo y se puede simplificar adecuadamente, solo envolviendo el nombre de la clase raíz del componente de la página, pero puede aumentar el riesgo de conflicto de estilo.
.home-page {
.btn {}
}
复制代码
2. Alcance CSS
scoped css
Se generará un atributo único o nombre de clase para todos los elementos bajo el componente actual (alcance), y todas las reglas de CSS llevarán atributos únicos para lograr la protección de nombres de alcance
// 手动写
.btn {}
// 编译后
.btn .jsx-1287234 {}
复制代码
3. Módulo CSS
module css
El nombre de la clase se codificará
Variables CSS
:root{
--bgcolor: #aaa;
--color: #000;
}
复制代码
Modo oscuro de configuración CSS
En su forma más simple, esto se logra a través de consultas de medios @media (prefers-color-scheme: dark)
y variables CSS.
@media (prefers-color-scheme: dark) {
:root{
}
}
复制代码