【H2O2|全栈】关于CSS(4)CSS基础(四)

news2024/11/17 21:53:04

目录

CSS基础知识

前言

准备工作

精灵图

概念

属性

案例

浮动

基础属性

清除浮动

案例 

预告和回顾

后话


CSS基础知识

前言

本系列博客将分享层叠样式表(CSS)有关的知识点。

接下来的几期内容相对比较少,主要是对前面的内容进行一些补充了。本期分享的内容为精灵图(雪碧图)和浮动效果的相关知识。

不是专业的科普博主,主打一个分享知识,写的不好,多多包涵(嘿嘿)。

准备工作

软件:【参考版本】Visual Studio Code

插件(扩展包):Open in browser

浏览器版本:Chrome

系统版本: Win10/11/其他非Windows版本

*我的电脑是Win10的版本,仅供参考*

精灵图

概念

精灵图,又叫sprite图,中文直译为雪碧图。

在我们之前自己做的网页中,需要用到很多张图片。比如我做的百度主页(后面优化一下看能不能做个类似的网站当案例讲),打开F12进行检查,可以看到加载的内容:

可以看到,加载三张图片花费了16ms的时间,而加载整个页面的html文档只花了1ms。

这还是几张相当小的、大小仅为KB级别的图片,试想,如果像正常网页一样需要一次加载成百上千张图片,而且部分图片的大小也比较大。那么,服务器将不断发出上千次的请求,加载时间也无限拉长,网站的效率就会很低,且服务器的负载极大。

所以,如果几张图片能在一张图中加载,就可以解决或改善上述问题。

精灵图将多个图标放到同一张图片上,它的优点可以总结为:

减少服务器接收和发送的请求次数,提高页面的加载速度以对网页进行性能优化

属性

精灵图利用到了背景属性相关的内容。主要涉及到background-imagebackground-position这几个属性。

background-image的作用是将图像设置为元素背景。默认值为none(无效果),也可以使用ul("路径")调用图片。

background-position用于设置显示的背景图像的起始位置。初始的位置是左上角(大概率)。该属性有两个值,分别对应水平位置和垂直位置,对应属性值如下:

水平位置 垂直位置
left/center/right top/center/bottom
px(x轴正方向向右)px(y轴正方向向上)
%(50%为相对背景居中)%(50%为相对背景居中)

*注意,如果只设置一个属性值,另一个值将默认为center*

此外,还有widthheight,他们用于设置显示的小图片的大小。

可以这么理解这个属性,我们现在有一个窗口,也就是我们的可见部分,背景图的默认位置是左上角大致与窗口左上角对齐。通过移动窗口,使得背景图显示的区域发生变化,以达到显示指定区域特定大小的图片的效果。

窗口左上角的点的位置坐标,就是background-position的值,该坐标符合笛卡尔四象限坐标系。

案例

现在有下面这么一张雪碧图:

我现在需要设计一排按钮,使他们的初始颜色为白色,鼠标悬浮时颜色变为黄色,就需要分别定位到白色和黄色的小图标了。 

注意哈,上面这张图是没有背景的,所以白色图标看不清。下载之后记得放到对比度较高的背景里来看。

原点大致在第一排的小图标的头的位置,所以,第一组(第一排)小图标的background-position就可以写成:

.icon-1 {
            background-position: 22px 0;
        }

.icon-1:hover {
            background-position: -4px 0;
        }

类似的可以设置其他的小图标,这里我把所有的按钮放到一个表格里了,完整CSS代码如下:

<style>
        * {
            margin: 0;
            padding: 0;
        }

        table {
            margin: 20px auto;
        }

        td {
            width: 28px;
            height: 28px;
            background-image: url("./image/sidebaricon.png");
            background-color: #000;
        }

        .icon-1 {
            background-position: 22px 0;
        }

        .icon-1:hover {
            background-position: -4px 0;
        }

        .icon-2 {
            background-position: 22px -23px;
        }

        .icon-2:hover {
            background-position: -4px -23px;
        }

        .icon-3 {
            background-position: 22px -48px;
        }

        .icon-3:hover {
            background-position: -4px -48px;
        }

        .icon-4 {
            background-position: 22px -70px;
        }

        .icon-4:hover {
            background-position: -4px -70px;
        }

        .icon-5 {
            background-position: 22px -95px;
        }

        .icon-5:hover {
            background-position: -4px -95px;
        }

        .icon-6 {
            background-position: 22px -118px;
        }

        .icon-6:hover {
            background-position: -4px -118px;
        }

        .icon-7 {
            background-position: 22px -140px;
        }

        .icon-7:hover {
            background-position: -4px -140px;
        }

        .icon-8 {
            background-position: 22px -165px;
        }

        .icon-8:hover {
            background-position: -4px -165px;
        }

        .icon-9 {
            background-position: 22px -187px;
        }

        .icon-9:hover {
            background-position: -4px -187px;
        }

        .icon-10 {
            background-position: 22px -260px;
        }

        .icon-10:hover {
            background-position: -4px -260px;
        }
    </style>

完整HTML的主体中的代码如下:

<table>
        <tr>
            <td class="icon-1"></td>
        </tr>
        <tr>
            <td class="icon-2"></td>
        </tr>
        <tr>
            <td class="icon-3"></td>
        </tr>
        <tr>
            <td class="icon-4"></td>
        </tr>
        <tr>
            <td class="icon-5"></td>
        </tr>
        <tr>
            <td class="icon-6"></td>
        </tr>
        <tr>
            <td class="icon-7"></td>
        </tr>
        <tr>
            <td class="icon-8"></td>
        </tr>
        <tr>
            <td class="icon-9"></td>
        </tr>
        <tr>
            <td class="icon-10"></td>
        </tr>
    </table>

网页运行效果如下:

鼠标悬浮到按钮上时,可以变成黄色:

浮动

基础属性

float属性,即浮动属性,使元素向左向右移动,其周围的元素会重新排列

在使用div时,一般display都是为block(块元素),所以会呈现从上到下的排列方式。

而使用float可以将这种排列方式改换成水平排列的方式。

它的属性值和对应效果如下:

属性值效果
none默认   不浮动
left元素向左浮动
right元素向右浮动

设置了浮动效果的元素会一直向指定方向移动,直到遇到另一个浮动元素或遇到父级元素的边框

清除浮动

注意,设置了浮动效果的元素会脱离标准文档流

顾名思义,元素会相对于页面“浮起来”,导致后面没有浮动效果的元素就不能参考到它的位置了。

所以,我们需要清除这个“浮起来”的效果,让它“落地”。

使用到的属性就是clear。我们一般用一个专门设置了clear的空div,放到所有浮动元素的后面,以清除浮动效果——

<div class="top-wrap">
            <div class="left-box"></div>
            <div class="right-box"></div>
            <!-- 设置在这里 -->
            <div class="clear"></div>
        </div>

clear的属性值和对应清除效果如下:

属性值效果

left

清除左浮动的元素   在左侧不允许浮动元素
right清除右浮动的元素   在右侧不允许浮动元素
both在左右两侧都不允许浮动元素
none不清除

一般的,clear需要清除的元素既有left也有right,所以使用both属性操作比较方便。

案例 

下面给出百度首页的顶部标签栏使用浮动产生效果的示例代码,注意自己调整href哦。

HTML代码:

<div class="top-wrap">
        <div class="left-box">
            <a href="" target="_blank">新闻</a>
            <a href="" target="_blank">hao123</a>
            <a href="" target="_blank">地图</a>
            <a href="" target="_blank">贴吧</a>
            <a href="" target="_blank">视频</a>
            <a href="" target="_blank">图片</a>
            <a href="" target="_blank">网盘</a>
            <a href="" target="_blank">文库</a>
            <a href="" target="_blank">AI助手</a>
            <a href="" target="_blank">更多</a>
        </div>
        <div class="right-box">
            <input type="button" value="登录">
            <a href="">设置</a>
        </div>
        <div class="clear"></div>
    </div>

CSS代码:

        * {
            margin: 0;
            padding: 0;
        }

        .top-wrap {
            width: 100%;
            height: 80px;
        }

        .top-wrap .left-box {
            margin-left: 10px;
        }

        .top-wrap .right-box {
            margin-right: 10px;
        }

        .top-wrap a {
            display: block;
            width: auto;
            margin: 28px 15px 0;
            font-weight: 400;
            text-decoration: none;
            text-align: center;
        }

        .top-wrap input {
            display: block;
            width: 50px;
            color: #fff;
            font-size: 16px;
            margin: 26px 20px 0;
            padding: 2px;
            font-weight: 700;
            background-color: #4e6eed;
            border: 1px solid #4e6eed;
            border-radius: 5px;
            cursor: pointer;
        }

        .left-box a {
            float: left;
        }

        .right-box a,
        .right-box input {
            float: right;
        }

        a:link,
        a:visited {
            color: #000;
        }

        a:hover,
        a:active {
            color: blue;
        }

        .clear {
            clear: both;
        }

        .search-wrap {
            width: 100%;
            margin-top: 0;
        }

相关的知识在前几期博客中都了解过了,没有使用到超前的内容。

效果如下(上面有我一个不太方便展示的路径,图就不截全了):

预告和回顾

在下一期博客可能依然是对前面内容的补充,可能会补充一下定位的内容吧,不然像百度网页这样的页面的部分功能就不好做了。

对CSS文件感兴趣的朋友,可以看下面的CSS专栏,当前为第四期:

专栏 | CSS入门icon-default.png?t=O83Ahttp://t.csdnimg.cn/4bvCJ当然,也欢迎对全栈项目感兴趣的朋友查看我的其他专栏。

后话

在全栈领域,博主也只不过是一个普通的萌新而已。本系列的博客主要是记录一下自己学习的一些经历,然后把自己领悟到的一些东西总结一下,分享给大家。

文章全篇的操作过程都是笔者亲自操作完成的,一些定义性的文字加入了笔者自己的很多理解在里面,所以仅供参考。如果有说的不对的地方,还请谅解。

==期待与你在下一期博客中再次相遇==

——疑似有点缺氧的【H2O2】

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

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

相关文章

服务网关Gateway快速入门

1.引入 网关可以把它理解成坐高铁时的安检&#xff0c;他可以对用户做身份验证&#xff0c;哪些人能通过&#xff0c;哪些人不能通过&#xff0c;都由他决定&#xff0c;如果没有安检&#xff0c;那么高铁的安全性将受到打击&#xff0c;一个微服务没有网关&#xff0c;那么接口…

大数据新视界 --大数据大厂之HBase深度探寻:大规模数据存储与查询的卓越方案

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

webpack原理简述

1.1 核心概念 JavaScript 的 模块打包工具 (module bundler)。通过分析模块之间的依赖&#xff0c;最终将所有模块打包成一份或者多份代码包 (bundler)&#xff0c;供 HTML 直接引用。实质上&#xff0c;Webpack 仅仅提供了 打包功能 和一套 文件处理机制&#xff0c;然后通过生…

Mini-Omni 语言模型在流式传输中边思考边听说应用

引入简介 Mini-Omni 是一个开源的多模态大语言模型,能够在思考的同时进行听觉和语言交流。它具有实时端到端语音输入和流媒体音频输出的对话能力。 语言模型的最新进展取得了显著突破。GPT-4o 作为一个新的里程碑,实现了与人类的实时对话,展示了接近人类的自然流畅度。为了…

69、Python番外篇:从编程范式看如何学习一门编程语言的精髓

引言 在之前的文章中&#xff0c;我们曾聊过如何学习一门编程语言&#xff0c;当时是从程序的构成的角度来分析、展开的&#xff0c;主要提及了数据的表达 数据的处理&#xff0c;也就是数据结构 算法的内容。这个角度对应到所有编程语言&#xff0c;基本都是适用的。但是&a…

认识泛型和包装类

认识泛型和包装类 包装类基本数据类型和对应的包装类装箱和拆箱自动装箱和自动拆箱 什么是泛型引出泛型语法 泛型类的使用语法示例类型推导 裸类型(Raw Type)说明 泛型如何编译的擦除机制 泛型的上界语法示例复杂示例 泛型方法定义方法示例使用类型推导和不用类型推导静态的泛型…

电脑安装OpenWRT系统

通过网盘分享的文件&#xff1a;OpenWRT 链接: https://pan.baidu.com/s/1nrRBeKgGviD31Omji480qA?pwd9900 提取码: 9900 下面开始教程&#xff1a; 1.先把普通U盘制作成一个PE启动盘&#xff0c;我用的是微PE工具箱&#xff0c;直接安装PE到U盘。 2.把写盘工具和openWRT系统…

项目中使用简单的立体3D柱状图,不用引入外部组件纯css也能实现

在一些项目需求中&#xff0c;可能会遇到下面这种场景&#xff0c;3d柱状图来展示百分比&#xff0c;但是又不想引入外部组件&#xff0c;下面就用纯css给大家封装了一个组件 先赞后看&#xff0c;养成习惯 <template><view class"lui-column-bg" :sty…

DApp开发入门指南:从概念到实践

随着区块链技术的不断发展&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐成为科技领域的热门话题。DApp不仅打破了传统应用的中心化控制&#xff0c;还为开发者和用户提供了更高的安全性、透明度和自治性。本文将带你深入了解DApp的开发流程以及如何设计合理的DApp…

SIMCOM-A4767C-4G模块ARM开发板上网配置流程

进入linux系统命令行后。 配置4G网卡 1、打开串口&#xff0c;会进入编辑模式。 busybox microcom /dev/ttyUSB22、设置网络模式&#xff0c;回复OK表示设置成功。 ATDIALMODE03、设置ECM模式&#xff0c;回复OK表示设置成功。设置成功后4g会重启。 AT$MYCONFIG"USB…

Vue3:el-table实现日期的格式化

后端如果返回的是时间戳&#xff0c;需要我们进行日期格式化 例如&#xff1a;2024-09-11T14:19:14 定义一个日期解析的工具组件 export function formatDateAsYYYYMMDDHHMMSS(dateStr: any) {const date new Date(dateStr);const year date.getFullYear();const month S…

【已解决】请教 “Sa-Token 集成 xxl-job,报错:非 web 上下文无法获取 HttpServletRequest” 如何解决

1. xxl-job 报错日志 2024-09-11 17:19:04 [com.xxl.job.core.thread.JobThread#run]-[133]-[xxl-job, JobThread-3-1726046344528] <br>----------- xxl-job job execute start -----------<br>----------- Param: 2024-09-11 17:19:04 [com.xxl.job.core.thread…

使用mingw64 编译 QT开发流程

1. 安装QT5 QT5.12.12 安装时选择mingw的开发包 2. 使用qtdesigner 进行ui设计 生成ui文件 3. 将ui文件转换为.h 文件 uic mywindow.ui -o ui_mywindow.h代码中指向生成的 UI 对象的地方 要改成这个Form 4. 编译 创建mainwindow.cpp #include "mainwindow.h"…

PROTOTYPICAL II - The Practice of FPGA Prototyping for SoC Design

The Art of the “Start” The semiconductor industry revolves around the “start.” Chip design starts lead to more EDA tool purchases, more wafer starts, and eventually to more product shipments. Product roadmaps develop to extend shipments by integrating…

Ton的编译过程(上)

系列文章目录 FunC编写初始准备 文章目录 系列文章目录预先准备第一个FunC合约深入compileFunc的内部compileFunc初探艾丽卡的疑惑package.json 初览index.js 预先准备 首先请大家跟着艾丽卡一步一步的完成FunC编写初始准备 这里面环境的搭建。 接下来&#xff0c;请做好下面…

博弈论中纳什均衡和囚徒困境的探索性分析

一. 纳什均衡求解 纳什均衡&#xff0c;又称为非合作博弈均衡&#xff0c;是博弈论中的一个核心概念。纳什均衡描述的是在非合作博弈中&#xff0c;每个参与者都选择了自己的最优策略&#xff0c;并且考虑到了其他参与者的策略选择。在这种状态下&#xff0c;没有任何一个参与…

HAL库学习梳理——SPI

笔者跟着B站铁头山羊视频学习 STM32-HAL库 开发教程。下面对HAL库有关 SPI 课程知识和应用做一个梳理。 无流可省 1、SPI 总线基本原理 SPI总线&#xff08;Series Peripheral Interface&#xff09;串行外设接口&#xff0c;适用于高速、双向数据传输场景。 MOSI MISO SCK …

提权——Linux

一、系统漏洞提权 #kali的nmap命令 nmap -O 目标ip 通过当前系统的内核版本搜索当前系统的漏洞&#xff0c;进行利用 搜索漏洞 对linux系统的漏洞进行利用&#xff08;脏牛、脏管道等&#xff09; 利用漏洞搜索工具&#xff0c;搜索当前系统是否存在一些漏洞 linux-exp…

单值二叉树--(C语言)

题目如下&#xff1a; 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;[1,1,1,1,1,null,1] 输出&#xff1a;true示例 2&a…