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

2023-09-21 09:00:00


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

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

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


1. 伪类与伪元素

在CSS中,伪类和伪元素有什么区别?请举例说明。

  • 伪类(Pseudo-class):伪类用于选择元素的特定状态或行为,如:hover(鼠标悬停状态)、:active(被激活状态)、:first-child(第一个子元素)等。它们以冒号(:)开头。

示例

a:hover {
  color: blue; /* 鼠标悬停时改变链接颜色 */
}
  • 伪元素(Pseudo-element):伪元素用于创建一个元素的虚拟子元素,如::before(在元素内容前面插入虚拟元素)、::after(在元素内容后面插入虚拟元素)等。它们以双冒号(::)开头。

示例

p::before {
  content: "前置内容 ";
}

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

2. 文字与字体

在CSS中,如何设置文字的大小和字体?你如何加载外部字体?

  • 文字大小(font-size):可以使用font-size属性设置文本的大小。例如,font-size: 16px;将文本大小设置为16像素。

  • 字体(font-family):使用font-family属性指定要用于文本的字体。例如,font-family: Arial, sans-serif;将字体设置为Arial或任何默认sans-serif字体。

加载外部字体:要加载外部字体,您可以使用@font-face规则。这允许您引用远程字体文件,并使用它们作为元素的字体。

@font-face {
  font-family: 'CustomFont';
  src: url('path/to/font.woff2') format('woff2');
}

body {
  font-family: 'CustomFont', sans-serif;
}

3. 布局

在CSS中,你如何对元素进行垂直居中?

对元素进行垂直居中有多种方法,以下是其中一种方法(使用Flexbox):

.container {
  display: flex;
  justify-content: center; /* 水平居中 */
  align-items: center; /* 垂直居中 */
  height: 100vh; /* 设置容器高度为视口高度 */
}

在这个示例中,.container是包含要垂直居中的元素的容器,通过设置display: flex;,使用justify-content: center;水平居中,使用align-items: center;垂直居中,并设置容器高度为视口高度,可以将元素垂直居中。

4. 动画与过渡

你能举一个使用CSS中的动画和过渡的例子吗?并解释它的工作原理。

过渡(Transition)示例

.button {
  transition: background-color 0.3s ease;
}

.button:hover {
  background-color: #007bff; /* 鼠标悬停时背景颜色过渡到蓝色 */
}

这个示例中,当鼠标悬停在按钮上时,background-color属性的变化会在0.3秒内平滑过渡到新的值(蓝色)。

动画(Animation)示例

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

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

这个示例中,使用@keyframes规则定义了一个旋转动画,从0度旋转到360度。然后,将该动画应用于一个具有.spinner类的元素,使其以线性变化方式在2秒内无限次旋转。

5. 重叠与层叠

在CSS中,“position”属性对元素的层叠有何影响?

position属性控制元素在文档中的定位方式,对元素的层叠顺序(z轴位置)也有影响。主要的position属性值包括:

  • static(默认值):元素按照文档流排列,不会影响层叠顺序。
  • relative:元素相对于其正常位置进行偏移,不会改变层叠顺序。
  • absolute:元素相对于其最近的已定位祖先元素进行定位,会影响层叠顺序。
  • fixed:元素相对于视口进行定位,会影响层叠顺序。

position属性与z-index属性结合使用可以更精确地控制元素的层叠顺序。

6. 响应式设计

你如何使用CSS和JavaScript来动态调整页面布局以适应不同的屏幕尺寸?

响应式设计通常使用媒体查询(CSS)和JavaScript来实现。媒体查询用于根据不同屏幕尺寸应用不同的CSS样式,而JavaScript可以用于在特定事件发生时执行不同的布局操作。

/* 媒体查询示例:根据屏幕宽度应用不同的样式 */
@media (max-width: 768px) {
  /* 在小屏幕上隐藏侧边栏 */
  .sidebar {
    display: none;
  }
}

/* JavaScript示例:根据窗口大小调整布局 */
window.addEventListener('resize', function() {
  if (window.innerWidth < 768) {
    // 在小屏幕上执行布局调整操作
  } else {
    // 在大屏幕上执行布局调整操作
  }


});

通过以上方法,您可以根据屏幕尺寸动态调整页面布局以实现响应式设计。

7. CSS框架

你使用过哪些CSS框架?对它们有什么评价?

我了解了一些常见的CSS框架,如Bootstrap、Foundation、Bulma等。这些框架提供了预定义的CSS样式和组件,有助于快速构建响应式网站和Web应用。它们的优点包括:

  • 提供一致的设计和布局,有助于节省开发时间。
  • 响应式设计,适应不同设备和屏幕尺寸。
  • 大量的组件和样式可供选择,使得用户界面设计更容易。

然而,使用框架也有一些潜在的缺点,例如可能需要额外的学习成本,不够灵活,需要覆盖默认样式等。评价框架通常取决于项目需求,是否需要快速原型开发或者更定制化的设计。

8. 文字与字体

在CSS中,你如何设置文本的颜色和字体?

  • 文本颜色:您可以使用color属性来设置文本颜色。例如,color: #333;将文本颜色设置为深灰色。

  • 字体:字体设置可以使用font-family属性来指定要用于文本的字体,例如,font-family: Arial, sans-serif;将字体设置为Arial或任何默认sans-serif字体。

9. Flexbox

在Flexbox布局中,“justify-content”和“align-items”属性分别有什么作用?

  • justify-content:用于控制Flex容器中的子元素在主轴上的对齐方式。它可以接受值如flex-start(默认,左对齐)、flex-end(右对齐)、center(居中对齐)、space-between(平均分布,首尾紧靠边界)、space-around(平均分布,每个子元素周围有空间)等。

  • align-items:用于控制Flex容器中的子元素在交叉轴上的对齐方式。它可以接受值如flex-start(顶部对齐)、flex-end(底部对齐)、center(垂直居中对齐)、stretch(拉伸以填充整个容器高度)等。

这两个属性允许您在Flexbox布局中精确控制子元素的对齐方式。

10.动画与过渡

在CSS中,transition和animation的属性有哪些相同和不同之处?

在CSS中,transitionanimation都用于创建动画效果,但它们有一些相同之处和不同之处。

相同之处

  1. 用途:两者都用于实现元素的动画效果,可以改变元素的属性值,使其平滑地过渡或进行复杂的动画。

  2. 属性值:两者都可以应用于多种CSS属性,如颜色、位置、尺寸等。

  3. 时间控制:可以设置动画或过渡的持续时间、延迟时间和计时函数(timing function),以控制动画的速度和缓动效果。

不同之处

  1. 工作方式

    • transitiontransition用于在元素从一种状态变为另一种状态时平滑过渡。它通常用于处理简单的状态变化,例如悬停状态下的颜色变化或过渡效果。
    • animationanimation允许您创建更复杂的动画,通过@keyframes规则定义动画的关键帧。您可以在动画中定义多个关键帧,以控制元素在不同时间点的状态。这使得animation更适合创建复杂的、自定义的动画效果。
  2. 关键帧控制

    • transitiontransition不涉及关键帧,它只需要定义起始状态和结束状态,然后通过过渡来实现状态之间的平滑变化。
    • animationanimation需要使用@keyframes规则明确定义动画的每个关键帧,从而精确控制元素在动画过程中的状态变化。
  3. 触发方式

    • transition:通常通过CSS伪类(如:hover)或JavaScript来触发过渡效果的开始。
    • animation:可以通过CSS动画的animation-play-state属性来控制动画的播放和暂停,也可以通过JavaScript来动态启动、停止或控制动画。
  4. 复杂性

    • transition:适用于处理简单的状态变化和过渡效果,相对较简单。
    • animation:适用于创建复杂的、高度自定义的动画效果,可以控制每一帧的状态,更灵活。

综上所述,transition适用于简单的状态切换和过渡效果,而animation适用于需要更高度自定义的、复杂的动画。选择哪种取决于您的项目需求和所需的动画复杂性。

更多推荐

C++ - 异常介绍和使用

前言我们在日常编写代码的时候,难免会出现编写错误带来程序的奔溃,或者是用户在使用我们编写的程序时候,使用错误所带来程序的奔溃。在C++当中可以对你觉得可能发生错误的地方在运行之前进行判断,发生错误可以给出提示。C语言传统的处理错误的方式在了解C++当中处理错误的异常之前,我们先来了解一下C语言当中处理错误的方式。终止程

前端面试的话术集锦第 20 篇博文——高频考点(输入 URL 到页面渲染的整个流程)

这是记录前端面试的话术集锦第二十篇博文——高频考点(输入URL到页面渲染的整个流程),我会不断更新该博文。❗❗❗借用这道经典面试题,将之前学习到的浏览器以及网络几章节的知识联系起来。首先是DNS查询,如果这一步做了智能DNS解析的话,会提供访问速度最快的IP地址回来。1.DNSDNS的作用就是通过域名查询到具体的IP。

【Vue】安装并使用vue-cli搭建SPA项目

目录一、Vue-cli安装1.1什么是Vue-cli1.2安装Vue-cli1.3使用Vue-cli构建项目二、SPA项目2.1导入、运行SPA项目2.2vue项目结构说明2.3.什么是*.vue文件2.4基于SPA项目完成路由2.5基于SPA项目完成嵌套路由一、Vue-cli安装1.1什么是Vue-cliVueCLI

换台电脑python使用uiautomator2操作逍遥模拟器

前几天写了一篇文章python使用uiautomator2操作雷电模拟器_小小爬虾的博客-CSDN博客今天用另外一个环境和模拟器再次测试。环境如下:win7sp164位;Python3.8.10;逍遥模拟器9.0.6;android版本9;逍遥模拟器自带adb版本1.0.41一、首先将手机(模拟器)进入开发者模式。多次

2023/9/18 -- C++/QT

作业完善登录框点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。如果账号和密码匹配,则弹出信息对话框,给出提

《消费金融真经》笔记

《消费金融真经》笔记一:概述与产品规划消费金融五大原则;竞品调研;收入来源;产品特征;增值功能;创造品牌;目标客群匹配;发展预测;产品实验。《消费金融真经》笔记二:信用评分信用评分优势;信用评分劣势;评分系统建设(评分系统规划,开发,实施,评测和监控);通用评分模型。《消费金融真经》笔记三:获客寻找潜在用户;筛选账户;

wallet connect简单使用

walletconnect简单使用准备工作安装配置打包测试准备工作新建一个文件夹xxx右键在终端中打开npminit-y在文件夹中新建src目录在src目录中新建index.html和index.js文件目录大概就这样我这是打包过的安装按照官方文档先安装官方页面长这样我们需要用到的是web3Modal点进去我们可以看到

C | atexit函数

C|atexit函数文章目录C|atexit函数atexit区别进程终止的方式Reference欢迎关注公众号“三戒纪元”atexitmain函数是整个程序的入口,但是其实可以在内核中可以使用链接器来设置程序的开始地方。当内核使用⼀个exec函数执行C程序时,在调⽤main函数之前先调用⼀个特殊的启动例程,可执行程序将

安装ThinkPHP5.1并在框架中使用FFmpeg视频处理工具遇到的问题和解决办法

一:安装ThinkPHP5.1框架问题一:安装方法有很多,我这里使用composer安装的,但是遇到了问题,出现了报错安装方法可是查看https://www.kancloud.cn/manual/thinkphp5_1/353948composercreate-projecttopthink/thinkblog5.1.

objList=strList为什么报错

代码复现先看下面一段代码List<String>strList=newArrayList<>();List<Object>objList=strList;//报错乍一看好像没什么问题,但为什么追报错呢?先别急,看下面一段代码List<Integer>intList=newArrayList<>();List<Objec

负载均衡策略

一台机器不能满足,则增加两台或者多台机器,共同承担访问压力,这就是典型的集群和负载均衡架构。一、轮询(RoundRobin)按照顺序将请求依次分配给每个服务器,确保每个服务器都能平均分担负载。二、哈希(IPHash)根据客户端的IP地址将请求分配给服务器,这会通过哈希函数来分配应用服务器。相同IP的客户端将始终被分配到

热文推荐