css知识学习系列(2)-每天10个知识点

2023-09-21 09:00:00


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


1. 基础知识

CSS中的伪元素和实际元素有什么区别?

  • 实际元素:实际元素是HTML文档中真正存在的元素,如<div><p><a>等。它们是文档的一部分,由浏览器渲染。
  • 伪元素:伪元素是CSS中用于选择元素的特殊方式,它们不在HTML文档中实际存在。伪元素通过::before::after等伪类选择器来创建,并用于在元素的内容前面或后面插入生成的内容。

示例

/* 伪元素示例 */
p::before {
  content: "前置内容 ";
}

p::after {
  content: " 后置内容";
}

2. 动画与过渡

CSS中的transition和animation有何区别?在什么情况下使用哪种动画?

  • transitiontransition属性用于在元素状态变化时实现平滑的过渡效果,例如,当鼠标悬停在元素上时,属性从一个状态过渡到另一个状态。它适用于简单的状态切换和过渡效果。

  • animationanimation属性允许您创建更复杂的动画,通过@keyframes规则定义动画的关键帧。您可以在动画中定义多个关键帧,以控制元素在不同时间点的状态。它适用于需要更高度自定义的动画效果。

示例

/* 使用transition实现简单的颜色过渡 */
.button {
  transition: background-color 0.3s ease;
}

.button:hover {
  background-color: #007bff;
}

/* 使用animation创建关键帧动画 */
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.spinner {
  animation: spin 2s linear infinite;
}

3. Flexbox

在Flexbox布局中,“flex-wrap”属性有什么作用?

flex-wrap属性用于控制Flex容器中的子元素是否换行。它有以下三个可能的值:

  • nowrap(默认值):子元素不会换行,它们会在同一行上放置,可能导致溢出容器。
  • wrap:如果空间不足,子元素会换行并放置在下一行。
  • wrap-reverse:与wrap相似,但是从反方向开始换行。

flex-wrap属性允许您更好地控制Flex容器中的子元素在不同屏幕尺寸下的布局。

4. Grid

请解释CSS中的网格线(grid lines)和轨道(tracks)是什么?

  • 网格线:网格线是Grid布局中的虚拟线,用于定义网格的列和行。它们位于列和行之间,可以用来定位网格项(子元素)。网格线从1开始计数。

  • 轨道:轨道是网格线之间的水平或垂直空间,它们定义了网格项的位置和大小。轨道分为列轨道和行轨道,分别用于水平和垂直方向。

示例

.grid-container {
  display: grid;
  grid-template-columns: 1fr 2fr; /* 定义两列轨道 */
  grid-template-rows: 100px 200px; /* 定义两行轨道 */
}

/* 在此示例中,有两列和两行,形成一个2x2的网格。 */

5. 重叠与层叠

在CSS中,如何处理元素的重叠?你会如何使用“z-index”属性?

元素的重叠可以使用z-index属性来控制。z-index属性定义了元素在堆叠上下文中的堆叠顺序。具有较高z-index值的元素会位于具有较低z-index值的元素之上。

示例

.element1 {
  z-index: 2;
}

.element2 {
  z-index: 1;
}

在处理重叠时,确保:

  • 确保要重叠的元素具有position属性(如relativeabsolutefixed),否则z-index不会生效。
  • 不要滥用z-index,以免导致混乱和难以维护的代码。

6. 响应式设计

你如何使用媒体查询(media queries)来实现响应式布局?

媒体查询允许您根据不同屏幕尺寸和设备特性应用不同的CSS样式。以下是一个简单的媒体查询示例,根据屏幕宽度来应用不同的样式:

/* 默认样式 */
.element {
  background-color: red;
}

/* 当屏幕宽度小于等于600px时应用以下样式 */
@media (max-width: 600px) {
  .element {
    background-color: blue;
  }
}

通过使用媒体查询,您可以创建适应不同设备和屏幕尺寸的响应式布局。

7. 文字与字体

在CSS中,你如何设置文本的对齐方式或字体样式?

  • 文本对齐:可以使用text-align属性设置文本的水平对齐方式,如左对齐(left)、右对齐(right)、居中对齐(center

等。

  • 字体样式:可以使用一系列字体属性来设置文本的字体样式,包括font-family(字体名称)、font-size(字体大小)、font-weight(字体粗细)、font-style(字体样式,如斜体)、line-height(行高)等。

示例

.text {
  text-align: center; /* 居中对齐文本 */
  font-family: Arial, sans-serif; /* 设置字体 */
  font-size: 16px; /* 设置字体大小 */
  font-weight: bold; /* 设置字体粗细 */
  font-style: italic; /* 设置斜体 */
  line-height: 1.5; /* 设置行高 */
}

8. 盒模型

在CSS盒模型中,“box-sizing”属性有什么作用?它与“width”和“height”有什么区别?

box-sizing属性定义了元素的盒模型如何计算其总宽度和高度。它有两个可能的值:

  • content-box:默认值,总宽度和高度仅包括内容区域,不包括内边距和边框。
  • border-box:总宽度和高度包括内容区域、内边距和边框。

box-sizingwidthheight属性的区别在于,如果将元素的box-sizing属性设置为border-box,那么设置的widthheight属性将包括内边距和边框。这使得更容易控制元素的总尺寸。

9. 动画与过渡

CSS中的transition和animation可以应用于哪些属性?它们对性能有何影响?

transitionanimation可以应用于几乎所有CSS属性,包括位置、大小、颜色、背景等。您可以通过设置transition-property或在@keyframes规则中指定不同的属性来定义动画效果。

性能方面,过渡(transition)通常比动画(animation)更轻量级,因为过渡只在状态变化时触发,而动画可能会在每一帧都执行。在需要简单的状态切换和平滑过渡效果时,使用过渡通常更合适。动画适用于更复杂的自定义动画效果,但需要更多的计算资源。

10. 响应式设计

如何使用CSS实现不同设备的适配?

为了实现不同设备的适配,可以采取以下措施:

  • 使用媒体查询(@media)来根据不同屏幕宽度、高度、设备类型等条件应用不同的CSS样式。
  • 使用百分比单位和相对单位(如emrem)而不是固定像素来定义尺寸,以使元素相对于父元素或视口进行缩放。
  • 使用max-widthmin-width来限制元素的最大和最小宽度,以确保在不同屏幕尺寸下表现良好。
  • 使用自适应图像,例如响应式图像或图像的max-width: 100%,以适应不同屏幕尺寸。
  • 使用Flexbox和Grid等布局技术来创建灵活的、自适应的布局。
  • 进行跨浏览器测试和移动设备测试,以确保在不同设备上呈现一致性。

这些方法可以帮助您创建适应不同设备的响应式设计。

更多推荐

小插曲 -- 使用Linux编写 判断程序是否在运行的小程序

编写思路首先,在执行“ps-elf|grepxxx”时,如果xxx存在,通常会有两条结果,一个是xxx对应的PID,一个则是grep对应的PID,但是如果我希望执行命令后,xxx存在就只有xxx对应的PID,不存在就什么都不显示的话,可以将指令修改成:“ps-elf|grepXXX|grep-vgrep”,这样就可以屏

雷电9模拟器抓包

背景本人一开始使用fiddler,然后使用wireshark。然后一直没能成功对雷电9完成JDapp的抓包任务,后来发现一款新产品Reqable,实现了JD请求抓包。思路经过查找资料,我发现核心思路都相差不大,基本使用模拟器wifi代理+证书的形式,把同一局域网下的请求由本地端口代理,再通过工具进行抓包。实战本文以Re

有多条业务线,mysql建多库多表比较好还是一个库多个表比较好呢?

这个问题的答案取决于您的具体需求。以下是一些需要考虑的因素:数据独立性:如果您的业务线之间的数据是独立的,并且不太可能需要进行跨业务线的查询,那么将它们分成多个数据库可能是有意义的。这样可以使每个业务线的数据更加独立,减少潜在的冲突和竞态条件。查询性能:在某些情况下,将数据分为多个表可能会提高查询性能。例如,如果您的数

Qt(day5)

思维导图将登录操作和数据库绑定mywnd.h#ifndefMYWND_H#defineMYWND_H#include<QMainWindow>#include<QLabel>#include<QLineEdit>#include<QPushButton>#include<QDebug>#include<QMessage

程序人生,中秋共享

程序人生,中秋共享随着科技的迅速发展,中秋节也悄然发生了变化。在这个传统的团圆节日里,程序人生与中秋共享形成了新的气象。在本文中,我将结合自己的职业经历,探讨程序人生与中秋共享之间的联系与意义。【中秋与程序人生的交融】作为程序员,我们每天都在和代码打交道,通过一行行指令来构建世界。然而,在这个机械化的过程中,我们也不忘

LLM预训练之RLHF(一):RLHF及其变种

在ChatGPT引领的大型语言模型时代,国内外的大模型呈现爆发式发展,尤其是以年初的LLaMA模型为首的开源大模型和最近百川智能的baichuan模型,但无一例外,都使用了「基于人类反馈的强化学习」(RLHF)来提升语言模型的性能,并在模型重注入了人类的偏好,以提高模型的有用性和安全性。不过RLHF也早已更新换代,我们

【Spring Boot】操作Redis数据结构

🌿欢迎来到@衍生星球的CSDN博文🌿🍁本文主要学习【SpringBoot】操作Redis数据结构🍁🌱我是衍生星球,一个从事集成开发的打工人🌱⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者交流学习。💠我希望通过每一次学习,让更多读

【MySql】1- 基础篇(上)

文章目录1.1前言1.2基础架构1.2.1MySql基本架构示意图1.2.2SQL语句执行顺序1.3日志系统:一条SQL更新语句如何执行1.3.1两阶段提交1.4事务隔离1.4.1隔离性与隔离级别1.4.2事务隔离的实现-展开说明“可重复读”1.4.3事务的启动方式1.5深入浅出索引1.5.1索引常见模型1.5.1In

双周赛113(枚举、分类讨论 + 二分查找、枚举值域两数之和、换根DP)

文章目录双周赛113[2855.使数组成为递增数组的最少右移次数](https://leetcode.cn/problems/minimum-right-shifts-to-sort-the-array/)暴力枚举贪心O(n)[2856.删除数对后的最小数组长度](https://leetcode.cn/problem

91. 面试官:JSONP的原理是什么?

91期1.JSONP的原理是什么?2.css优先级是什么样的?3.display的值有哪些,分别有什么作用?上面问题的答案会在第二天的公众号(程序员每日三问)推文中公布90期问题及答案1.什么是前后端分离,好处是什么?前后端分离是一种软件架构模式,它将前端和后端开发分离为两个独立的工作流程和技术栈,它们通过API或We

Java 中 jps 命令

jps(JavaVirtualMachineProcessStatusTool)是Java开发工具包(JDK)中的一个命令行工具,用于查看Java虚拟机(JVM)中运行的Java进程的状态信息。它通常用于检查正在运行的Java应用程序的进程ID(PID)和相关信息,这对于调试和性能监控非常有用。以下是jps命令的使用示

热文推荐