阅读视图

发现新文章,点击刷新页面。

深入浅出 CSS 基础:从概念到选择器实战

引言

在前端开发的世界里,CSS(层叠样式表)就像是一位神奇的化妆师,能够让原本朴素的 HTML 页面变得绚丽多彩。它不仅可以控制页面的布局,还能为元素添加各种动态效果,提升用户的交互体验。今天,就让我们一起来深入了解 CSS 的基础知识,尤其是各种选择器的使用。

一、CSS 基础概念

1.1 声明(Declaration)

在 CSS 里,一个属性与值的键值对被称为声明(declaration)。例如:

color: red;

这里 color 是属性,red 是对应的值,它们共同构成了一个声明。

1.2 声明块(Declaration Block)

一个声明块由一对花括号 {} 包裹,其中可以包含多个声明。每个声明之间用分号 ; 分隔。示例如下:

p {
    color: red;
    font-size: 16px;
    line-height: 1.5;
}

在这个例子中,p 是选择器,大括号内的内容就是声明块,包含了三个声明。

1.3 选择器(Selector)

选择器用于指定声明块作用的元素。简单来说,就是告诉浏览器哪些元素需要应用这些样式。上面例子中的 p 就是选择器,它表示页面中所有的 <p> 元素都会应用声明块里的样式。

1.4 规则集(Ruleset)

多个选择器和对应的声明块组合在一起就构成了规则集。一个 CSS 文件通常包含多个规则集,每个规则集负责为特定的元素或元素组设置样式。

1.5 CSS 层叠样式表

CSS 之所以被称为层叠样式表,是因为当多个样式规则应用到同一个元素时,会根据一定的规则来决定最终显示的样式。这些规则包括选择器的优先级、样式的来源等。

二、CSS 选择器详解

2.1 兄弟选择器

兄弟选择器用于选择与某个元素处于同一层级的其他元素。常见的兄弟选择器有两种:紧邻兄弟选择器和通用兄弟选择器。

紧邻兄弟选择器(+

紧邻兄弟选择器选择的是某个元素之后紧邻的同级元素。例如:

h1 + p {
    color: red;
}

这个选择器会选择所有紧跟在 <h1> 元素之后的 <p> 元素,并将它们的文字颜色设置为红色。

通用兄弟选择器(~

通用兄弟选择器选择的是某个元素之后的所有同级元素。例如:

h1 ~ p {
    color: blue;
}

这个选择器会选择所有在 <h1> 元素之后的 <p> 元素,无论它们之间是否有其他元素间隔,并将它们的文字颜色设置为蓝色。

2.2 伪类选择器

CSS 伪类用于定义元素的特殊状态,如鼠标悬停、激活、获取焦点等。常见的伪类选择器有:

  • :hover:当鼠标悬停在元素上时应用样式。
p:hover {
    background-color: yellow;
}
  • :active:当元素被激活(如按钮被点击)时应用样式。
button:active {
    background-color: red;
    color: white;
}
  • :focus:当元素获取焦点(如输入框被选中)时应用样式。
input:focus {
    border: 2px solid blue;
}

2.3 结构伪类选择器

结构伪类选择器根据元素在文档树中的位置来选择元素。其中比较常用的是 :nth-child() 选择器。

:nth-child() 选择器

:nth-child() 选择器可以根据元素在其父元素中的位置来选择元素。例如:

.container p:nth-child(3) {
    background-color: yellow;
    color: black;
}

这个选择器会选择类名为 container 的元素下的第三个子元素,并且这个子元素必须是 <p> 标签,然后将其背景颜色设置为黄色,文字颜色设置为黑色。

三、总结

CSS 的基础知识和选择器是前端开发中不可或缺的一部分。通过合理运用声明、声明块、选择器和规则集,我们可以为 HTML 页面添加丰富多样的样式。而兄弟选择器、伪类选择器和结构伪类选择器则为我们提供了更精确的元素选择方式,让我们能够实现更加复杂和动态的页面效果。希望大家通过本文对 CSS 有了更深入的理解,在今后的开发中能够灵活运用这些知识。

在实际开发中,我们还可以结合 HTML 结构和 JavaScript 来实现更多交互效果。不断学习和实践,才能让我们在前端开发的道路上越走越远。

从原生 JS 到 Vue 和 React:前端开发的进化之路

在前端开发的发展历程中,技术的迭代日新月异。从最初的原生 JS 到如今流行的 Vue 和 React 框架,前端开发变得更加高效和便捷。

一、原生 JS 时代

1.1 语义化标签

在原生 JS 开发中,语义化标签是构建页面结构的基础。比如在展示图表和表格时,通常会使用 <table> 标签,其结构包含 <thead><tr><th><tbody><tr><td> 等。这些标签不仅能让页面结构更加清晰,还便于老板等非技术人员查看数据。示例代码如下:

<table>
    <thead>
        <tr>
            <th>姓名</th>
            <th>家乡</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>张三</td>
            <td>北京</td>
        </tr>
    </tbody>
</table>

1.2 DOM 编程

原生 JS 中,DOM 编程是核心部分。通过操作 DOM 节点,我们可以动态更新页面内容。例如,当需要根据用户输入或数据变化更新表格内容时,就需要使用 DOM 操作。但这种方式代码量较大,且维护起来比较困难。

1.3 样式与用户体验

在原生 JS 开发中,样式编写往往需要关注很多细节,容易出现重复代码。为了提升用户体验,我们可以引入第三方库,如 Bootstrap。它是一个 PC 端的 CSS 框架,提供了栅格系统等功能,能让我们更专注于业务逻辑。

二、从原生 JS 到框架的转变

2.1 jQuery 的兴衰

在早期的前端开发中,jQuery 发挥了重要作用,它简化了 DOM 操作和事件处理。然而,随着前端技术的发展,jQuery 逐渐退出了历史舞台。现代前端框架提供了更强大的功能和更高效的开发方式。

2.2 Vue:聚焦业务开发

Vue 是一款轻量级的前端框架,它让开发者能够聚焦于业务逻辑。以展示 friends 数据为例,在原生 JS 中需要手动操作 DOM 来循环输出 <tr> 元素,而在 Vue 中可以使用 v-for 指令轻松实现。示例代码如下:

<div id="app">
    <table>
        <thead>
            <tr>
                <th>姓名</th>
                <th>家乡</th>
            </tr>
        </thead>
        <tbody>
            <tr v-for="friend in friends" :key="friend.id">
                <td>{{ friend.name }}</td>
                <td>{{ friend.hometown }}</td>
            </tr>
        </tbody>
    </table>
</div>

<script>
    const app = Vue.createApp({
        data() {
            return {
                friends: [
                    { id: 1, name: '王同学', hometown: '九江' },
                    { id: 2, name: '刘同学', hometown: '赣州' }
                ]
            };
        }
    });

    app.mount('#app');
</script>

在这个例子中,我们使用 v-for 指令遍历 friends 数组,并动态生成 <tr> 元素。这样就无需手动操作 DOM,大大提高了开发效率。

2.3 React:适合大型应用的框架

React 是 Facebook 开发的一款前端框架,适合构建大型应用。创建 React 应用可以使用 npm init vite 命令。React 采用组件化开发模式,将页面拆分成多个独立的组件,每个组件有自己的状态和逻辑,便于维护和复用。

三、现代前端开发框架的优势

3.1 离开原生 JS 的“刀耕火种”

现代前端框架让开发者摆脱了原生 JS 中繁琐的 DOM 操作和复杂的代码逻辑,提供了更高效、更简洁的开发方式。

3.2 聚焦业务

现代前端框架引入了 App 的概念,将开发者从“切图崽”的角色转变为 App 应用开发工程师。例如在 Vue 中,可以使用 Vue.createApp(App).mount('#app') 来接管页面,使用高级的框架特性完成业务需求,而无需使用低级的 DOM API。

3.3 循环输出数据的便捷性

在 Vue 和 React 中,循环输出数据变得非常简单。Vue 可以使用 v-for 指令,React 可以使用 map 方法。这种方式让代码更加简洁易读,也便于维护。

四、总结

从原生 JS 到 Vue 和 React,前端开发经历了巨大的变革。现代前端框架让开发者能够更专注于业务逻辑,提高开发效率和代码质量。无论是小型项目还是大型应用,都可以根据需求选择合适的框架。希望本文能帮助大家更好地理解前端开发的进化之路,在实际开发中做出更合适的选择。

❌