前端css实例

前端css实例

一、带条纹的表格

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>条纹样式的表格</title>
    <style>
        table {
            widh: 50%;
            border-collapse: collapse;
        }
        th, td {
            text-align: left;
            padding: 8px;
        }
        .tab tr:nth-child(odd) {
            background-color: #f2f2f2;
        }
        .tab tr:nth-child(even) {
            background-color: slategray;
        }
    </style>
</head>
<body>
    <table class="tab">
        <tr>
            <th>表头1</th>
            <th>表头2</th>
            <th>表头3</th>
        </tr>
        <tr>
            <td>数据1</td>
            <td>数据2</td>
            <td>数据3</td>
        </tr>
        <tr>
            <td>数据4</td>
            <td>数据5</td>
            <td>数据6</td>
        </tr>
        <tr>
            <td>数据7</td>
            <td>数据8</td>
            <td>数据9</td>
        </tr>
    </table>
</body>
</html>

在这里插入图片描述

在 CSS 中,tr:nth-child(odd) 是一个伪类选择器,用于选择所有在其父元素(比如 <table>)中的奇数位置的 <tr> 元素。

解释

  • nth-child() 是 CSS 中的一个伪类,用来根据元素在父元素中的位置来选择子元素
  • oddnth-child() 中的一个关键字,表示选择奇数位置的元素(例如:1、3、5、7…),even 表示偶数位置的元素(例如:2、4、6、8…)
  • 由于在 CSS 中,元素的计数是从 1 开始的,所以 tr:nth-child(odd) 会选择所有在父元素中处于奇数位置的 <tr> 元素

核心思路

使用表格中的行的伪类选择器,改变奇数行或偶数行表格的背景颜色即可

  • tr:nth-child(odd)表示奇数行
  • tr:nth-child(even)表示偶数行

二、带下拉菜单的水平导航栏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>带下拉菜单的水平导航栏</title>
    <style>
        ul {
            list-style-type: none;
            margin: 0px;
            padding: 0px;
            background-color: yellowgreen;
            display: flex;
            justify-content: center;
            height: 75px;
        }
        li {
            display: inline;
        }
        a {
            display: block;
            height: 100%;
            text-decoration: none;
            padding: 0 20px;
            line-height: 75px;
            font-weight: 600;
            font-size: large;
        }
        a:hover {
            background-color: aliceblue;
            color: black;
        }
        .bar {
            position: relative;
        }
        .mean {
            position: absolute;
            list-style-type: none;
            margin: 0px;
            padding: 0px;
            background-color: skyblue;
            display: none;
            width: 120px;
            z-index: 1;
        }
        .mean a {
            text-align: center;
            background-color: skyblue;
        }
        .bar:hover .mean{
            display: block;
        }
        .mean a:hover {
            background-color: lightyellow;
        }
    </style>
</head>
<body>
    <ul>
        <li><a href="#">关于</a></li>
        <li><a href="#">新闻</a></li>
        <li class="bar"><a href="#">练习</a>
            <ul class="mean">
                <li><a href="#">css</a></li>
                <li><a href="#">html</a></li>
                <li><a href="#">js</a></li>
                <li><a href="#">vue</a></li>
            </ul>
        </li>
        <li><a href="#">我们</a></li>
        <li><a href="#">合作</a></li>
    </ul>
</body>
</html>

在这里插入图片描述

核心思路:

先使用无序列表实现水平导航栏:

  • 水平导航栏中的元素要想居中,可以先将ul标签设置为弹性盒子模型,在通过justify-content: center;居中即可
  • 将块级标签li改变为行内标签display: inline;
  • 设置a标签为块级标签display: block;,在通过height: 100%从而来撑满标签
  • 最后在设置a标签的:hover中(鼠标聚焦即实现)改变背景颜色和字体颜色

再在要添加下拉菜单的li标签中添加另一个无序列表:

  • 先给指定的li标签设置为相对位置,以便先拉菜单出现在正确位置position: relative;
  • 设置下拉菜单的列表标签ul设置为绝对位置,接收最近已定位的父元素li的相对位置;再将显示关闭display: none;并设置下拉菜单框的宽度;最后确保下拉菜单显示在其他元素之上定义z-index: 1;
  • mean下的a标签设置为文本居中text-align: center;
  • 设置指定li标签的:hover并改变.mean中的显示状态display: block;
  • 设置在meana标签的:hover,改变鼠标聚焦时的背景颜色

三、带悬浮动漫的按钮

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>带悬浮动漫的按钮</title>
    <style>
        .btn {
            background-color: skyblue;
            padding: 15px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s, transform 0.3s;
            position: absolute;
            top: 50px;
            left: 50px;
            font-size: large;
        }
        .btn:hover {
            background-color: aqua;
            transform: scale(1.2);
        }
    </style>
</head>
<body>
    <button class="btn">悬浮按钮</button>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

核心思路:

直接设置按钮的样式:

  • 设置鼠标光标聚焦按钮变为手指cursor: pointer;
  • 设置变化效果,使用transition属性(用于指定元素在状态变化时的过渡效果)transition: background-color 0.3s, transform 0.3s;,改变背景颜色和大小,时间均为0.3s(transform可以scale(比例)——缩放、translate(x,y)——平移、rotate(度数deg)——旋转,……)
  • 给按钮设置:hover,使得光标聚焦时,设置改变后的背景颜色background-colortransform缩放属性

四、带阴影的卡片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>带阴影的卡片</title>
    <style>
        .card {
            box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.3);
            padding: 14px 16px;
        }
        .card1 {
            box-shadow: inset 0px 4px 8px rgba(0, 0, 0, 0.3);
            padding: 14px 16px;
        }
    </style>
</head>
<body>
    <div class="card">
        <h2>带阴影的卡片</h2>
        <p>这是卡片的内容</p>
    </div>
    <br><br>
    <div class="card1">
        <h2>内阴影</h2>
        <p>这是卡片的内容</p>
    </div>
</body>
</html>

在这里插入图片描述

核心思路:

直接设置卡片的样式即可:

  • 使用box-shadow属性,box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.3),第一个属性是水平偏移量,第二个属性是垂直偏移量,第三个属性是模糊半径,第四个是阴影颜色rgba(0,0,0,0.3)其中的0.3是透明度
  • *如果要使用内阴影,即在box-shadow属性前面加inset*即可

五、图片的提示文本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片的提示文本</title>
    <style>
        .img-container {
            position: relative;
            display: inline-block;
        }
        .img-container img {
            width: 250px;
            height: auto;
            border-radius: 8px;
        }
        .tip {
            position: absolute;
            background-color: rgba(0, 0, 0, 2);
            color: white;
            padding: 10px;
            border-radius: 5px;
            opacity: 0;
            transition: opacity 0.3s ease;
            font-size: large;
            /* 禁用鼠标事件 */
            pointer-events: none;
        }
        .img-container:hover .tip{
            opacity: 1;
        }
    </style>
</head>
<body>
    <div class="img-container">
        <img src="image\pexels-nascimento-vieira-455892312-19295658.jpg" alt="图片加载失败">
        <div class="tip">这是这个图片的提示文本</div>
    </div>
</body>
</html>

在这里插入图片描述

核心思路:

先设置整个容器:

  • 将父容器的位置改为相对定位postion: relative;,以便后面的提示文本内容位置的接收
  • 再将整个容器设置为行内块级元素,以便后面仅将光标移动到图片位置,而不是整行

再设置提示文本:

  • 先设置提示文本的定位为,绝对定位postion: absolute;
  • 将元素的透明度设置为0,即不可见opacity: 0;
  • 设置平滑的过渡效果,transition: opacity 0.3s ease; 其中ease是一个过渡时间函数,表示过渡会以一种平滑的速度变化,开始和结束时较慢,中间较快
  • 最后禁用鼠标事件pointer-events: none;

最后设置光标聚焦时,提示文本的展示:

  • 设置整个容器的:hover(但在文本位置时不会展示,因为文本位置已经禁用了鼠标事件),此时设置tip标签的opacity: 1透明度设置为1,元素展示

六、折叠面板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>折叠面板</title>
    <style>
        .accordion {
            background-color: white;
            margin: 0 10px;
        }
        .accordion-header {
            background-color: aquamarine;
            border: none;
            border-radius: 5px;
            padding: 10px;
            cursor: pointer;
            font-size: large;
            font-weight: 500;
        }
        .accordion-content {
            padding: 10px 16px;
            display: none;
            background-color: aliceblue;
            border-radius: 5px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
        }
        .active .accordion-content {
            display: block;
        }
    </style>
</head>
<body>
    <h2>折叠面板</h2>
    <div class="accordion">
        <button class="accordion-header">折叠面板</button>
        <div class="accordion-content">
            <p>这是折叠面板的内容</p>
        </div>
    </div>
</body>
<script>
    const accord = document.querySelector('.accordion-header');
    accord.addEventListener('click', function() {
        const parent = this.parentElement;
        parent.classList.toggle('active');
    });
</script>
</html>

在这里插入图片描述

在这里插入图片描述

核心思路:

先设置整个容器:

  • 定义div容器,并将背景定义为白色

再设置容器中的按钮:

  • 设置按钮的基本属性,并设置光标聚焦时,改变鼠标样式cursor:pointer;

设置折叠面板的内容:

  • 设置不展示display: none;,也可以设置成带阴影的卡片box-shadow

使用JSDOM给添加按钮添加事件:

  • 定义一个常量使用类名接收按钮属性const accord = document.querySelector('.accordion-header');
  • 给这个常量添加点击事件监听.addEventListener('click', 函数),并定义点击后的函数
  • 在这个函数中再定义一个常量来获取该点击元素的父元素const parent = this.parentElement;
  • 给父容器添加.active类(有这个类则删除,没有这个类则添加),parent.classList.toggle('active');

设置事件控制的css样式:

  • 给要展示折叠面板的css加上父容器的前缀.active,如果有则执行这段css.active .accordion-content {}
  • 在这个css样式里面添加展示display: block;

七、网格布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网格布局</title>
    <style>
        .grid-container {
            display: grid;
            /* grid-template-columns: repeat(4, 1fr);
            grid-template-rows: repeat(2, 1fr); */
            grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
            gap: 10px;
            padding: 20px;
        }
        .grid {
            display: flex;
            justify-content: center;
            background-color: greenyellow;
            /* width: 200px; */
            aspect-ratio: 1;
            color: blueviolet;
            align-items: center;
            font-size: large;
            font-weight: 700;
        }
    </style>
</head>
<body>
    <div class="grid-container">
        <div class="grid">内容1</div>
        <div class="grid">内容2</div>
        <div class="grid">内容3</div>
        <div class="grid">内容4</div>
        <div class="grid">内容5</div>
        <div class="grid">内容6</div>
        <div class="grid">内容7</div>
        <div class="grid">内容8</div>
    </div>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

核心思路:

先定义整个容器的样式:

  • 先将整个容器设置为二维布局系统display: grid;
  • 再定义网格容器的列布局grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));使用repeat()函数创建列数,设置为auto-fill表示网格的列数会根据容器的宽度自动填充,使用minmax()函数定义每一列的最小宽度和最大宽度,1fr表示该列将分配容器可用空间的一部分
  • 设置各个网格项行列之间的间距gap: 10px

再定义每个网格项的样式:

  • 先将网格项的布局模式为Flexbox布局display: flex;(可以帮助更好的控制内容再元素内的对齐方式)
  • Flexbox布局下,控制子元素的对齐方式,水平居中justify-content: center;
  • 再设置元素的垂直居中align-items: center;(同样也适用于Flexbox布局)
  • 将网格项设置为正方形,使用aspect-ratio: 1;,控制元素的宽高比。
    -fill, minmax(200px, 1fr));使用repeat()函数创建列数,设置为auto-fill表示网格的列数会根据容器的宽度自动填充,使用minmax()函数定义每一列的最小宽度和最大宽度,1fr`表示该列将分配容器可用空间的一部分*
  • 设置各个网格项行列之间的间距gap: 10px

再定义每个网格项的样式:

  • 先将网格项的布局模式为Flexbox布局display: flex;(可以帮助更好的控制内容再元素内的对齐方式)
  • Flexbox布局下,控制子元素的对齐方式,水平居中justify-content: center;
  • 再设置元素的垂直居中align-items: center;(同样也适用于Flexbox布局)
  • 将网格项设置为正方形,使用aspect-ratio: 1;,控制元素的宽高比。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于云模型和遗传算法的建设工程风险决策多目标优化研究

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于云模型和遗传算法的建设工程风险决策多目标优化研究 基于云模型和遗传算法的建设工程风险决策多目标优化研究涉及在建设工程领域中运用云模型和遗传算法来优化风险决策的多个目标。云模型是一种将模糊理论与概率…

【Vue2.x】vue-treeselect修改宽度、回显

目录 修改vue-treeSelect 组件的高度方法1&#xff1a;CSS中的important语法&#xff0c;覆盖样式方法2&#xff1a;修改组件样式文件&#xff0c;重新引入样式文件 修改单选的回显&#xff0c;显示当前选中节点以及相应父级节点第一步 下载源码第二步 修改源码第三步 编译源码…

利用 SpringBoot 开发的新冠密接者跟踪系统:医疗机构疫情防控辅助方案

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

数据湖的概念(包含数据中台、数据湖、数据仓库、数据集市的区别)--了解数据湖,这一篇就够了

文章目录 一、数据湖概念1、企业对数据的困扰2、什么是数据湖3、数据中台、数据湖、数据仓库、数据集市的区别 网上看了好多有关数据湖的帖子&#xff0c;还有数据中台、数据湖、数据仓库、数据集市的区别的帖子&#xff0c;发现帖子写的都很多&#xff0c;而且专业名词很多&am…

Mac 环境下类Xshell 的客户端介绍

在 Mac 环境下&#xff0c;类似于 Windows 环境中 Xshell 用于访问 Linux 服务器的工具主要有以下几种&#xff1a; SecureCRT&#xff1a; 官网地址&#xff1a;https://www.vandyke.com/products/securecrt/介绍&#xff1a;支持多种协议&#xff0c;如 SSH1、SSH2、Telnet 等…

Linux系统编程——进程替换

目录 前言 二、进程程序替换的概念 三、进程程序替换的原理 ​编辑 四、为什么需要进行进程程序替换 五、如何进行进程程序替换 1、进程替换函数&#xff1a; 1)execl()函数 2)execv()函数 3) execlp()函数 4) execvp()函数 5&#xff09;execle函数 6&#xff09;ex…

MATLAB 中有关figure图表绘制函数设计(论文中常用)

在撰写论文时&#xff0c;使用 MATLAB 导出的图像常常因大小和格式不统一&#xff0c;导致投稿时编辑部频繁退稿&#xff0c;要求修改和调整。这不仅浪费时间&#xff0c;也增加了工作量。为了减少这些麻烦&#xff0c;可以在 MATLAB 中导出图像时提前设置好图表的大小、格式和…

YOLO系列论文综述(从YOLOv1到YOLOv11)【第13篇:YOLOv10——实时端到端物体检测】

YOLOv10 1 摘要2 网络结构3 YOLOv1-v10对比 YOLO系列博文&#xff1a; 【第1篇&#xff1a;概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇&#xff1a;YOLO系列论文、代码和主要优缺点汇总】【第3篇&#xff1a;YOLOv1——YOLO的开山之作】【第4篇&#xff1a…

Python基于滑动窗口CNN损伤梁桥数据、故宫城墙图像数据分类可视化|数据分享

全文链接&#xff1a;https://tecdat.cn/?p38442 分析师&#xff1a;Yufei Guo 在现代土木结构工程领域&#xff0c;结构损伤的准确识别与定位对于保障基础设施的安全性和耐久性具有极为关键的意义。传统的人工检查方法&#xff0c;如目视检查以及借助专业设备进行检测&#x…

基于Pytorch的CIFAR100数据集上从ResNet50到VGG16的知识蒸馏实验记录

知识蒸馏的概念 可以参照NeurIPS2015的论文“Distilling the Knowledge in a Neural Network”了解知识蒸馏的概念。 知识蒸馏的狭义概念就是从复杂模型中迁移知识来提升简单模型的性能。复杂模型称之为教师模型&#xff0c;简单模型称之为学生模型。最近&#xff0c;笔者重温…

jQuery九宫格抽奖,php处理抽奖信息

功能介绍 jQuery九宫格抽奖是一种基于jQuery库的前端抽奖效果。通过九宫格的形式展示抽奖项&#xff0c;用户点击抽奖按钮后&#xff0c;九宫格开始旋转&#xff0c;最终停在一个随机位置上&#xff0c;此位置对应的抽奖项为用户的中奖结果。 本文实现九宫格的步骤为&#xf…

鸿蒙修饰符

文章目录 一、引言1.1 什么是修饰符1.2 修饰符在鸿蒙开发中的重要性1.3 修饰符的作用机制 二、UI装饰类修饰符2.1 Styles修饰符2.1.1 基本概念和使用场景2.1.2 使用示例2.1.3 最佳实践 2.2 Extend修饰符2.2.1 基本概念2.2.2 使用示例2.2.3 Extend vs Styles 对比2.2.4 使用建议…

输入json 达到预览效果

下载 npm i vue-json-pretty2.4.0 <template><div class"newBranchesDialog"><t-base-dialogv-if"addDialogShow"title"Json数据配置"closeDialog"closeDialog":dialogVisible"addDialogShow":center"…

MDETR - Modulated Detection for End-to-End Multi-Modal Understanding

Abstract 多模态推理系统&#xff08;如视觉问答系统或图像与文本之间的匹配系统&#xff09;通常依赖于一个预训练的物体检测器&#xff0c;用于从图像中提取感兴趣的区域。这些物体检测器通常是作为“黑盒”使用的&#xff0c;也就是说&#xff0c;它们在被训练时独立于下游…

pytest+allure生成报告显示loading和404

pytestallure执行测试脚本后&#xff0c;通常会在电脑的磁盘上建立一个临时文件夹&#xff0c;里面存放allure测试报告&#xff0c;但是这个测试报告index.html文件单独去打开&#xff0c;却显示loading和404, 这个时候就要用一些办法来解决这个报告显示的问题了。 用命令产生…

【MyBatis】验证多级缓存及 Cache Aside 模式的应用

文章目录 前言1. 多级缓存的概念1.1 CPU 多级缓存1.2 MyBatis 多级缓存 2. MyBatis 本地缓存3. MyBatis 全局缓存3.1 MyBatis 全局缓存过期算法3.2 CacheAside 模式 后记MyBatis 提供了缓存切口&#xff0c; 采用 Redis 会引入什么问题&#xff1f;万一遇到需强一致场景&#x…

MySQL —— MySQL 程序

目录 前言 一、MySQL 程序简介 二、mysqld -- MySQL 服务器 三、mysql -- MySQL 客户端 1. mysql 客户端简介 2. mysql 客户端选项 &#xff08;1&#xff09;指定选项的方式 &#xff08;2&#xff09;mysql 客户端命令常用选项 &#xff08;3&#xff09;在命令行中使…

统一功能(2异常)

RequestMapping("/r1")public String returnString(){return "asdfghjkl";} 如果在RequestMapping中返回的类型是String但是统一返回结果是Result类就会报错。 原因&#xff1a;源码中需要Result类型但是传入的是String类型 统一异常处理&#xff1a; 比如…

浅谈js中onmouseleave和onmouseout的区别

同步发布于我的网站 &#x1f680; 背景介绍基本概念区别详解 无子元素的情况有子元素的情况 实际应用场景 使用 onmouseleave使用 onmouseout 注意事项总结 背景介绍 在前端开发中&#xff0c;我们经常需要为元素绑定鼠标事件&#xff0c;以实现各种交互效果。onmouseleave…

python+django自动化部署日志采用‌WebSocket前端实时展示

一、开发环境搭建和配置 # channels是一个用于在Django中实现WebSocket、HTTP/2和其他异步协议的库。 pip install channels#channels-redis是一个用于在Django Channels中使用Redis作为后台存储的库。它可以用于处理#WebSocket连接的持久化和消息传递。 pip install channels…