前端学习记录~2023.7.10~CSS杂记 Day5

news2025/3/13 19:02:57

  • 前言
  • 一、样式化表格
    • 1、一个典型的 HTML 表格
    • 2、进行样式化
      • (1)间距和布局
      • (2)简单地排版
      • (3)图形和颜色
      • (4)图案
      • (5)样式化标题
    • 最终效果如下 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ed8f0aad05e4405bb1c3472a06db992d.png#pic_center)
  • 二、调试 CSS
    • 1、比较 DOM 和 View Source
    • 2、审查 CSS
    • 3、编辑值
    • 4、添加新属性
    • 5、理解盒模型
    • 6、解决优先级问题
  • 三、组织 CSS
    • 1、保持统一
    • 2、将 CSS 格式化为可读的形式
    • 3、添加注释
    • 4、在样式表中加入逻辑段落
    • 5、避免太特定的选择器
    • 6、将大样式表分成几个小样式表
    • 7、OOCSS(面向对象的 CSS)
    • 8、BEM(块级元素修饰字符)
    • 9、预处理工具
    • 10、后处理以进行优化
  • 总结


前言

由于有很多知识非常符合直觉或者和其他语言有通用性,因此个人觉得不需要全部记下来,本篇只记录一些个人觉得需要注意或单独记忆的知识点。

同时为了提高效率和减少对不重要内容的时间投入,会考虑更加精简


一、样式化表格

1、一个典型的 HTML 表格

<table>
  <caption>A summary of the UK's most famous punk bands</caption>
  <thead>
    <tr>
      <th scope="col">Band</th>
      <th scope="col">Year formed</th>
      <th scope="col">No. of Albums</th>
      <th scope="col">Most famous song</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Buzzcocks</th>
      <td>1976</td>
      <td>9</td>
      <td>Ever fallen in love (with someone you shouldn't've)</td>
    </tr>
    <tr>
      <th scope="row">The Clash</th>
      <td>1976</td>
      <td>6</td>
      <td>London Calling</td>
    </tr>

      ... some rows removed for brevity

    <tr>
      <th scope="row">The Stranglers</th>
      <td>1974</td>
      <td>17</td>
      <td>No More Heroes</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <th scope="row" colspan="2">Total albums</th>
      <td colspan="2">77</td>
    </tr>
  </tfoot>
</table>

样式如下,虽然有scope<caption><thead><tbody>等做标记,但是仍旧不好看
在这里插入图片描述

2、进行样式化

还是以上面的表格为例

(1)间距和布局

需要做的第一件事是整理出空间/布局

/* spacing */

table {
  table-layout: fixed;
  width: 100%;
  border-collapse: collapse;
  border: 3px solid purple;
}

thead th:nth-child(1) {
  width: 30%;
}

thead th:nth-child(2) {
  width: 20%;
}

thead th:nth-child(3) {
  width: 15%;
}

thead th:nth-child(4) {
  width: 35%;
}

th, td {
  padding: 20px;
}
  • border-collapse: collapsed:表格的边框是合并的
  • table-layout: fixed:通常这样做可以避免表格尺寸跟随内容多少而发生变化。可以自己根据列标题的宽度来规定列的宽度,然后适当处理他们内容
  • thead th:nth-child(n):选择了4个不同的标题 (:nth-child) 选择器(“选择第 n 个子元素,它是一个顺序排列的<th>元素,且其父元素是<thead>元素”)并给定了它们的百分比宽度。整个列宽度与列标题的宽度是一样的,这是一种很好的设定表列尺寸的方式
  • 我们在<th><td>元素上设置了一些padding——这些元素使数据项有了一些空间,使表看起来更加清晰
  • 我们在整个表设置了一个border,这让它拥有了边界,更清晰

效果如下
在这里插入图片描述

(2)简单地排版

从 Google Fonts 上找一下字体,添加<link>元素和font-family声明,并使用 Google 字体提供的内容

<link href='https://fonts.googleapis.com/css?family=Rock+Salt' rel='stylesheet' type='text/css'>
html {
  font-family: 'helvetica neue', helvetica, arial, sans-serif;
}

thead th, tfoot th {
  font-family: 'Rock Salt', cursive;
}

th {
  letter-spacing: 2px;
}

td {
  letter-spacing: 1px;
}

tbody td {
  text-align: center;
}

tfoot th {
  text-align: right;
}
  • 给全局设置了一个字体,同时给theadtfoot额外设置了字体
  • 标题和单元格上设置了letter-spacing,这可以控制字符间距
  • tbody中的内容进行了居中。默认标题会居中,而单元格的text-align是left
  • tfoot的标题进行了右对齐
    在这里插入图片描述

(3)图形和颜色

thead, tfoot {
  background: url(leopardskin.jpg);
  color: white;
  text-shadow: 1px 1px 1px black;
}

thead th, tfoot th, tfoot td {
  background: linear-gradient(to bottom, rgba(0,0,0,0.1), rgba(0,0,0,0.5));
  border: 3px solid purple;
}

添加了字体颜色、背景和单元格边框

(4)图案

tbody tr:nth-child(odd) {
  background-color: #ff33cc;
}

tbody tr:nth-child(even) {
  background-color: #e495e4;
}

tbody tr {
  background-image: url(noise.png);
}

table {
  background-color: #ff33cc;
}

  • :nth-child(n):值除了可以为1、2、3等,还可以是odd(奇数)或even(偶数)关键字
  • 为所有行添加了噪点背景色块
  • 为整个表格提供了一个纯色背景色,这样浏览器如果不支持:nth-child选择器也仍然会有它们的正文行的背景

(5)样式化标题

caption {
  font-family: 'Rock Salt', cursive;
  padding: 20px;
  font-style: italic;
  caption-side: bottom;
  color: #666;
  text-align: right;
  letter-spacing: 1px;
}
  • caption-side:bottom:这让标题放置在表格的底部

最终效果如下
在这里插入图片描述

二、调试 CSS

学会使用开发者工具(比如浏览器的 F12)进行调试

1、比较 DOM 和 View Source

浏览器在渲染的 DOM 中会纠正一些错误的 HTML 部分。View Source 就是服务器端的 HTML 源码。因此可能会产生不一样的地方

2、审查 CSS

查看画框

点击小箭头来展开界面,显示不同的完整属性和它们的值

勾选或取消勾选一个规则来开关属性

3、编辑值

更改不同的值,来改变比如宽度或边框样式等

4、添加新属性

可以添加新声明新属性,需要注意如果出现无效情况会被划掉

5、理解盒模型

6、解决优先级问题

有时怎么更改都不生效很可能是有一个更明确的选择器把它覆盖掉了。

在开发者工具中不光能看到生效的属性和选择器,还能看到被覆盖掉的,他们会显示为被划掉


三、组织 CSS

为了增强可维护性

1、保持统一

比如对类使用相同的命名规则、使用统一格式化规范。

代码规范小组的优先于个人喜好。

2、将 CSS 格式化为可读的形式

每个属性对放在新的一行

例如

h2 {
  background-color: black;
  color: white;
}

3、添加注释

但不需要对任何东西都加上解释,因为很多都是自解释的。

应该加上注释的是因为某些原因做的特殊决定,或者是不够直观。

例如下面,就是为了保持对旧浏览器的兼容

.box {
  background-color: red; /* fallback for older browsers that don't support gradients */
  background-image: linear-gradient(to right, #ff0000, #aa0000);
}

4、在样式表中加入逻辑段落

大致可以像下面顺序进行安排

  1. 在样式表里面先给一般的东西加上样式是个好想法,这也就是除了你想特定对某个元素做点什么以外,所有将会广泛生效的样式。例如bodyph1uloltable属性链接
  2. 定义一些实用类,将一些想应用在许多不同元素上的东西加到这里
  3. 整个站点都会用到的所有东西,比如基础页面布局、抬头、导航栏样式
  4. 最后加上特指的东西,将它们分成上下文、页面甚至它们使用的组件

5、避免太特定的选择器

虽然有时也有用,但一般会导致复用困难

6、将大样式表分成几个小样式表

尤其在你对站点的不同部分设置了很不同的样式的时候,你会想要有个包含了所有普适规则的样式表,还有包含了某些段落所需要的特定规则的更小的样式表。你可以将一个页面连接到多个样式表,层叠的一般规则会在这里生效,即连接的靠后的样式表里面的规则会比前面的有更高优先级。这能保证 CSS 的组织性

7、OOCSS(面向对象的 CSS)

OOCSS 的基本理念是将你的 CSS 分解成可复用的对象,于是你可以在你的站点上任何需要的地方使用。

这块需要在实践中多尝试来形成习惯。

例如下面的例子,同时有评论区和列表,但有很多属性通用,那么建立一个叫作 media 的排布,里面包含所有的两种排布所共有的 CSS ——一个大致用于媒体对象的形状之类的基础类。然后我们再额外加入一个类,处理那些微小的区别,这样特定地扩展基础样式

.media {
  display: grid;
  grid-template-columns: 1fr 3fr;
}

.media .content {
  font-size: .8rem;
}

.comment img {
  border: 1px solid grey;
}

 .list-item {
  border-bottom: 1px solid grey;
}

在你的 HTML 里面,评论需要同时应用 media 和 comment 类:

<div class="media comment">
  <img />
  <div class="content"></div>
</div>

列表项应用了 media 和 list-item 类:

<ul>
  <li class="media list-item">
    <img />
   <div class="content"></div>
  </li>
</ul>

8、BEM(块级元素修饰字符)

在 BEM 中,一个块,例如一个按钮、菜单或者标志,就是独立的实体。一个元素就像一个列表项或者标题一样,被绑定到它所在的块。修饰字符是标记到一个块或者元素的标识,能够改变样式或者行为。

例如下面的 html 里应用的类

<form class="form form--theme-xmas form--simple">
  <input class="form__input" type="text" />
  <input
    class="form__submit form__submit--disabled"
    type="submit" />
</form>

9、预处理工具

例如 Sass

如果创建如下的 CSS,创建了在下面的第一行里面叫做$base-color的变量,我们之后可以在样式表的任何需要这一颜色的地方使用它。后面改动也可以只改这一个位置

$base-color: #c6538c;

.alert {
  border: 1px solid $base-color;
}

编译完 CSS 后,你会在最终的样式表里面得到下面的 CSS:

.alert {
  border: 1px solid #c6538c;
}

10、后处理以进行优化

如果你对加入例如许多额外的注释和空格,增大你的样式表大小有所关心的话,那么后处理会通过在生产版本中略去任何不必要的东西的方式,优化 CSS。后处理解决方案中,通过这种方式实现的一个例子是 cssnano。


总结

只记录了 CSS 的部分内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Cloud Alibaba】Nacos的服务注册和发现(discovery)的使用

【Spring Cloud Alibaba】系列文章 标题链接【Spring Cloud Alibaba】Nacos的安装与介绍以及Nacos集群的安装https://masiyi.blog.csdn.net/article/details/129530053【Spring Cloud Alibaba】Nacos config的使用和高阶用法https://masiyi.blog.csdn.net/article/details/129…

LabVIEW通过嘴唇图像识别为残疾人士开发文本输入系统

LabVIEW通过嘴唇图像识别为残疾人士开发文本输入系统 近年来&#xff0c;计算机已经成为现代人日常生活中的一种信息器具。人们可以使用计算机来处理复杂的文件&#xff0c;获取新信息并在线购物等。但是&#xff0c;上面讲的使用电脑的所有好处对普通人来说都很方便&#xff…

React05-样式隔离

一、样式隔离方案 css 的样式是全局样式&#xff0c;在书写react组件时&#xff0c;如果写了相同的样式类名&#xff0c;很容易造成样式污染。 在 vue 中&#xff0c;vue 官方提供了样式隔离方法&#xff0c;在组件代码中的 style 标签中加入 scoped&#xff0c;可以让这部分…

Python案例分析|使用Python图像处理库Pillow处理图像文件

本案例通过使用Python图像处理库Pillow&#xff0c;帮助大家进一步了解Python的基本概念&#xff1a;模块、对象、方法和函数的使用 使用Python语言解决实际问题时&#xff0c;往往需要使用由第三方开发的开源Python软件库。 本案例使用图像处理库Pillow中的模块、对象来处理…

Java中的JDBC编程(数据库系列6)

目录 前言&#xff1a; 1.什么是Java的JDBC编程 2.JDBC的数据库驱动包的导入过程 3.JDBC代码的编写 3.1创建并初始化一个数据源 3.2和数据库服务器建立连接 3.3构造SQL语句 3.4执行SQL语句 3.5释放必要的资源 3.6整体代码的展示及演示 3.7代码的优化 3.8 查询操作的…

「深度学习之优化算法」(十四)麻雀搜索算法

1. 麻雀搜索算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   麻雀搜索算法(sparrow search algorithm)是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。提出时间是2020年,相关的论文和研究还比较少,有可能还有一些正在发表中,受疫情影响需要论…

关于学习过程中的小点

nfev : 函数求值次数njev : Jacobian 评估的数量nit :算法的迭代次数 permute(dims)#维度转换 torch.split #[按块大小拆分张量] Pytorch.view Pytorch中使用view()函数对张量进行重构维度&#xff0c;类似于resize()、reshape()。用法如下&#xff1a;view(参数a,参数b,...)&a…

Nacos1.4.2单机与集群的安装部署

CentOS 部署Nacos1.4.2 下载 nacos 下载链接&#xff1a;https://github.com/alibaba/nacos/tags 如何选择我们下载的 nocas 版本&#xff1f; 查看 Spring Cloud Alibaba 与 nacos 版本对应关系&#xff1a;SpringCloudAlibaba 组件对应关系说明 本项目使用 nacos 1.4.2 …

Python(十七)数据类型转换——str()函数和int()函数

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

2023年上半年:C#、Python和一些实用语言

文章目录 C#Pythonerlang和exilirfortranR语言 最近半年的开发任务主要集中在C#和Python上&#xff0c;所以博客内容也几乎围绕这两个部分&#xff0c;偶尔会穿插一些其他语言。下面就对2023年上半年的博客做一个总结。 C# 主要用C#写了一个文本阅读器&#xff0c;提供生成目…

学C的第二十八天【字符串函数和内存函数的介绍(一)】

相关代码gitee自取&#xff1a;C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第二十七天【指针的进阶&#xff08;三&#xff09;】_高高的胖子的博客-CSDN博客 前言&#xff1a; &#xff08;1&#xff09;. C语言中对于字符和字符串的处理很是频繁&…

linux驱动开发:驱动开发框架,linux内核字符设备驱动开发过程

一、驱动框架 1.Linux内核模块和字符驱动的关系 模块是Linux进行组建管理的一种方式, 结构体:对设备的管理内核需要抽象出来一个结构体来描述设备所有的共性信息写驱动需要申请一个结构体并赋值(初始化),然后注册给内核让内核统一管理 驱动:由内核统一管理,所以驱动…

NUXT3学习笔记2

1、配置Ant design Vue (两个安装方式随便选一种&#xff0c;yarn会安装的更快) npm i ant-design-vue --save yarn add ant-design-vue 2、使⽤的 Vite&#xff0c;你可以使⽤ unplugin-vue-components 来进⾏按需加载。 yarn add unplugin-vue-components --save 在nuxt.…

设计模式——享元模式

享元模式 定义 享元模式&#xff08;Flyweight Pattern&#xff09;是池技术的重要实现方式。 使用共享对象可以有效地支持大量的细粒度对象。 优缺点、应用场景 优点 可以大大减少应用程序创建对象的数量&#xff0c;降低程序内存占用。 缺点 提高了系统的复杂度&…

5分钟上手IP代理服务

一 IP代理服务 在网上找了一个性价比高的IP代理服务&#xff0c;一个IP地址1分钱。 二 API协议 调用方式为http协议&#xff0c;响应数据格式支持JSON和txt&#xff0c;都是比较常用的方式。 三 源码范例 包括一些主流的编程语言&#xff0c;一分钟上手。 我用的python比较…

【Redis应用】查看附近(五)

&#x1f697;Redis应用学习第五站~ &#x1f6a9;本文已收录至专栏&#xff1a;Redis技术学习 查看附近的XXX在我们的实际应用中非常广泛&#xff0c;能支持该功能的技术有很多&#xff0c;而在我们的Redis中主要依靠GEO数据结构来实现该功能&#xff01; 一.GEO用法引入 GE…

问题解决:win10连接手机热点总是频繁自动断开

问题描述:尝试解决 问题解决:win10连接手机热点总是频繁自动断开 问题描述: 在使用win10笔记本电脑连接手机热点上网时,是不是的网络自动就断掉了,而且重新连上后,用着用着又断了, 这就让人有点恼火了, 尝试解决 重启电脑与手机 以前没出现过而现在有这种情况,可能是电脑或手机…

Spark复习笔记

文章目录 Spark在Hadoop高可用模式下读写HDFS运行流程构成组件作业参数RDD机制的理解算子map与mapPartition区别Repartition和Coalesce区别reduceBykey 与 groupByKeyreduceByKey、foldByKey、aggregateByKey、combineByKey区别cogroup rdd 实现原理宽窄依赖为什么要划分stage如…

Elasticsearch:语义搜索、知识图和向量数据库概述

结合对你自己的私有数据执行语义搜索的概述 什么是语义搜索&#xff1f; 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。 这种方法基于这样的想法&#xff1a;搜索引擎不仅应该匹配查询中的关键字&#xff0c;还应该尝…

LINUX命令:update-alternatives(软件版本管理工具)

前言   在基于 LINUX 操作系统之上安装所需开发环境组件时&#xff0c;可能会遇到无可避免的场景是&#xff1a;同一个组件&#xff0c;我们需要同时使用到两个或者更多的版本&#xff0c;比如 Java 有 1.6、1.7、1.8 等多版本&#xff0c;又比如 Python 有 2、3 等等&#x…