CSS入门学习笔记(二)

学习视频:https://www.bilibili.com/video/BV1zN2UYoEEo/

目录

  • 浮动
    • 浮动的几种应用效果
      • 设置img浮动,去掉空隙
      • 设置div重叠,位于上下层
      • 多个div水平排列
      • 宽度不足时,会自动换行
      • li元素水平排列
    • 浮动的副作用
    • 解决副作用——清除浮动
      • 方法1:为父元素设置高度
      • 方法2:受影响元素添加clear属性
      • 方法3:overflow清除浮动
      • 方法4:伪对象方式
  • 定位
    • 相对定位
    • 绝对定位
    • 固定定位
    • 总结
    • z-index
  • CSS3新特性
    • 圆角border-radius
    • 阴影box-shadow
    • 动画
    • 媒体查询
      • 设置meta标签
      • 媒体查询语法
  • 雪碧图
  • 字体图标

浮动

浮动,就是增加一个浮层来放置内容。
可以理解为有两层页面,一层是底层的原页面,一层是脱离文档流的上层页面:

在这里插入图片描述

通过float属性定义元素往哪个方向浮动(只有左右浮动,没有上下浮动),
任何元素都可以浮动,浮动后元素脱离文档流。
float属性有两个值:left和right。

浮动的几种应用效果

设置img浮动,去掉空隙

    <style>
        img{
            float: left;
            width: 200px;
        }
    </style>
</head>
<body>
    <img src="girl.png" />
    <img src="girl.png" />
</body>

设置div重叠,位于上下层

<head>
    <style>
        .top{
            width: 100px;
            height: 100px;
            background-color: antiquewhite;
            float: left;
        }
        .bottom{
            width: 300px;
            height: 200px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>
    <div class="top"></div>
    <div class="bottom"></div>
</body>

在这里插入图片描述
也可以设置float为right,使其向右浮动。

多个div水平排列

<head>
    <style>
        div{
            width: 100px;
            height: 100px;
            float: left;
        }
        .box1{
            background-color: red;
        }
        .box2{
            background-color: green;
        }
        .box3{
            background-color: blue;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</body>

在这里插入图片描述

宽度不足时,会自动换行

在上面基础上,给body设置宽度:

        body{
            width: 250px;
        }

则由于宽度不够,第三个盒子自动换行了:
在这里插入图片描述
如果宽度为50px,则变成垂直排列了:

在这里插入图片描述

li元素水平排列

<head>
    <style>
        li{
            float: left;
            margin-left: 50px;
        }
    </style>
</head>
<body>
    <ul>
        <li>导航1</li>
        <li>导航2</li>
        <li>导航3</li>
        <li>导航4</li>
    </ul>
</body>

效果:
在这里插入图片描述

浮动的副作用

使用浮动前,在一个灰色div内有三个小的红色div盒子:

<head>
    <style>
        .container{
            width: 500px;
            height: 400px;
            background-color:#aaa;
        }
        .box{
            width: 100px;
            height: 100px;
            background-color:red;
            margin: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
    </div>
</body>

在这里插入图片描述

现在想让三个div水平排列,并且随着宽度变化可以自动换行,于是使用浮动,也就是为box类添加float: left;,得到效果图如下:

在这里插入图片描述
发现灰色背景的div不见。调试可发现该div高度为0,所以不可见。

由此产生了问题:浮动导致父元素高度塌陷。(浮动不会参与父元素高度的计算)

可以再添加一个非浮动的子元素,则父元素的高度只是按这个非浮动子元素的高度进行计算。

也就是添加了p样式,以及div内外两个p元素:

        p{
            background-color: aqua;
        }
        
    <div class="container">
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
        <p>Hello world!</p>
    </div>
    <p>Hello world!</p>

在这里插入图片描述

总结一下浮动的副作用:

  • 浮动元素会造成父元素高度塌陷
  • 后续元素会受到影响

解决副作用——清除浮动

方法1:为父元素设置高度

为父元素设置高度300px:
在这里插入图片描述
存在问题:父元素内部的子元素仍会被浮动元素遮挡、父元素高度写死了不灵活。

方法2:受影响元素添加clear属性

为父元素内部的p元素添加clear属性(为了简洁,就为所有p都添加了clear属性):

        p{            
            clear: both;
        }

在这里插入图片描述

clear属性有三个值:left、right、both,可以选择清除某一个方向的浮动,也可以都清除。

使用clear属性后,也可以同时为父元素添加高度,效果如下:

在这里插入图片描述

方法3:overflow清除浮动

父元素可以不设置高度,而是为父元素添加属性overflowclear

        .container{
            width: 500px;
            /* height: 300px; */
            background-color:#aaa;
            overflow: hidden;
            clear: both;
        }

效果(父元素外部的会排在父元素下方,而父元素内部的还是会被挡住):

在这里插入图片描述
如果想让父元素内部元素不被浮动元素挡住,则同时使用方法2,为内部的p元素添加clear:both

方法4:伪对象方式

为父元素添加伪类after,设置空的内容,设置为块级元素,并使用clear: both

        .container{
            width: 500px;
            /* height: 300px; */
            background-color:#aaa;
        }
        .container::after{
            content: '';
            display: block;
            clear: both;
        }

效果图和方法3的效果图一样。

定位

position属性指定了定位的类型:

  • relative,相对定位
  • absolute,绝对定位
  • fixed,固定定位

绝对定位和固定定位会脱离文档流,设置定位后,可以使用left、right、top、bottom四个属性调整位置。

相对定位

相对定位,是在文档流内调整位置。

<head>
    <style>
        div {
            width: 200px;
            height: 100px;
            background-color: #18e709;
            opacity: 0.4;
            position: relative;
            top:10px;
            left:50px;
        }
    </style>
</head>
<body>
    <p>Hello world!</p>
    <div></div>
</body>

在这里插入图片描述

绝对定位

绝对定位则脱离了文档流。

在上面代码基础上,修改position为absolute,效果图:

在这里插入图片描述
不像浮动(都是在一层中),每一个元素的绝对定位都是单独的一层。所以如果要实现多个元素的压盖,则可以使用绝对定位。

固定定位

与绝对定位的区别:当内容多出现滚动条,随着页面滚动,固定定位的元素不会滚动,而是始终在一个位置处。

总结

设置定位后,相对定位和绝对定位是相对于具有定位的父级元素进行位置调整,如果父级元素不存在定位,则继续向上逐级寻找,直到顶层文档。

<head>
    <style>
        html, body{
            margin: 0;
        }
        .container {
            width: 200px;
            height: 200px;
            background-color: antiquewhite;
            position: relative;
            margin: 20px;
        }
        .box {
            width: 100px;
            height: 80px;
            background-color: red;
            position: absolute;
            left: 20px;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="box"></div>
    </div>
</body>

在这里插入图片描述

z-index

z-index表示堆叠顺序。

当发生堆叠时,z-index的值越大,堆叠顺序越高,越排在上层显示。

CSS3新特性

圆角border-radius

    <style>
        div{
            width: 100px;
            height: 50px;
            background-color:aquamarine;
            border-radius:20px;
        }
    </style>
</head>
<body>
    <div></div>
</body>

在这里插入图片描述

在这里插入图片描述
设置宽高相同且border-radius值为50%(大于50%时的效果和50%一样),则变成圆形:

        div{
            width: 100px;
            height: 100px;
            background-color:aquamarine;
            border-radius: 50%;
        }

在这里插入图片描述

阴影box-shadow

在这里插入图片描述
box-shadow第一个值是水平偏移距离,例如设置为10px,则向右偏移10px:

        div{
            width: 200px;
            height: 140px;
            background-color:aquamarine;
            border-radius: 10px;
            margin: auto auto;
            box-shadow: 10px 0 0 #999;
        }

在这里插入图片描述
如果是-10px,则向左偏移10px:

在这里插入图片描述

同理,box-shadow第二个值是垂直偏移量,正值向下偏移,负值向上偏移。

通常习惯设置两个正值,即向右向下偏移。

box-shadow: 10px 10px 0 #999;

在这里插入图片描述

box-shadow第三个值是模糊距离(应该是在偏移的基础上再向外渐变一定距离),例如分别设置为5px、10px、20px,则效果:

在这里插入图片描述

动画

动画,使元素从一种样式逐渐变化为另一种样式的效果。

使用@keyframes关键词(后面紧跟着动画名称)创建动画,一种是使用百分比(可以写很多个百分比,支持多种变化),一种是只有from/to(只有开始和结束,只有两种变化):

    <style>
        @keyframes myAnimi {
            from{
                background-color: antiquewhite;
            }
            to{
                background-color: aqua;
            }
        }

        @keyframes myAnimi2 {
            0%{
                background-color: antiquewhite;
            }
            50%{
                background-color: aqua;
            }
            100%{
                background-color: blue;
            }
        }
    </style>

然后调用动画:

        div{
            width: 100px;
            height: 100px;
            background-color: azure;
            animation: myAnimi 2s linear 0s infinite;
            animation-play-state: running;
        }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以添加鼠标悬浮时动画暂停:

        div:hover{
            animation-play-state: paused;
        }

媒体查询

媒体查询能在不同的设备条件下使用不同的样式。

设置meta标签

使用设备的宽度作为视图宽度步兵禁止初始的缩放,在head标签里加入meta标签:

<meta name="viewport" content="width=device-width, initial-scale=1.0">
  • width=device-width,宽度等于当前设备的宽度
  • initial-scale=1.0初始的缩放比例,默认设置为1.0
  • maximum-scale=1允许用户缩放到的最大比例,默认设置为1.0
  • user-scalable=no用户是否可以手动缩放,默认设置为no

下面对比一下添加和不添加上面meta标签的区别,首先绘制一个div:

        div{
            width: 300px;
            height: 300px;
            background-color: red;
        }

下图上面是保留meta标签,下面是去掉meta标签的效果对比:
在这里插入图片描述
第二张图中的300px不是真正的300px,而是根据pc端的页面进行缩放了,不是按照原比例显示的。

媒体查询语法

        /* 小于768px时 */
        @media screen and (max-width: 768px) {
            div {
                background-color: red;
            }
        }
        /* 大于等于768px,小于996px */
        @media screen and (min-width: 768px) and (max-width: 996px){
            div {
                background-color: green;
            }
        }
        /* 大于等于996px时 */
        @media screen and (min-width: 996px) {
            div {
                background-color: blue;
            }
        }

雪碧图

CSS Sprite也叫做CSS精灵图/CSS雪碧图,是一种网页图片应用处理方式。它允许将一个页面涉及到的所有零星图片都包含到一张大图中。

例如有下面一张图,里面有很多小图:

在这里插入图片描述

只需要向服务器请求一次,获得该大图,前端再根据需要选择具体某些小图,从而减少对服务器的请求次数。

原理:

  1. 通过background-image引入背景图片
  2. 通过background-position把背景图片移动到自己需要的位置
    <style>
        span{
            width: 90px;
            height: 90px;
            display: block; 
            background-image: url(icons.png);
            border: 1px solid #000;
        }
        .icon{
            background-position: -17px -27px;
        }
        .icon2{
            background-position: -136px -27px;
        }
    </style>
</head>

<body>
    <span class="icon"></span>
    <span class="icon2"></span>
</body>

在这里插入图片描述

字体图标

优点:

  • 轻量性:加载速度快,减少http请求
  • 灵活性:可以利用CSS设置大小颜色等
  • 兼容性:网页字体支持所有现代浏览器,包括IE低版本

到阿里巴巴矢量图标库下载图标代码:

  1. 注册账号并登录
  2. 搜索图标、选择图标
  3. 将图标添加到购物车
  4. 下载图标代码,获得压缩包
  5. 将压缩包解压

例如,解压后得到如下文件:

在这里插入图片描述

打开里面的html文件,可以看到有几种引用图标的方式,此处采用font-class 引用的方式:

  1. 引入项目下面生成的 fontclass 代码
<link rel="stylesheet" href="./iconfont.css">
  1. 挑选相应图标并获取类名,应用于页面
<span class="iconfont icon-xxx"></span>

然后可以像修改字体一样修改图标:

    <style>
        .myicon{
            font-size: 40px;
            color: red;
        }
    </style>
</head>

<body>
    <span class="iconfont icon-jianzhuye myicon"></span>
</body>

在这里插入图片描述

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

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

相关文章

解锁 DeepSeek 模型高效部署密码:蓝耘平台深度剖析与实战应用

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

打家劫舍3

今天和打家讲一下打家劫舍3 题目&#xff1a; 题目链接&#xff1a;337. 打家劫舍 III - 力扣&#xff08;LeetCode&#xff09; 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为root。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“…

redis项目

短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节&#xff0c;我们会理解缓存击穿&#xff0c;缓存穿透&#xff0c;缓存雪崩等问题&#xff0c;让小伙伴的对于这些概念的理解不仅仅是停留在概念上&#xff0c;更是能在代码中看到对应的内容 优惠…

每日一题洛谷P5733 【深基6.例1】自动修正c++

#include<iostream> #include<string> using namespace std; int main() {string t;cin >> t;for (int i 0; i < t.length(); i){if (t[i] > a && t[i] < z){t[i] A - a;}cout << t[i];}return 0; }

windows + visual studio 2019 使用cmake 编译构建静、动态库并调用详解

环境 windows visual studio 2019 visual studio 2019创建cmake工程 1. 静态库.lib 1.1 静态库编译生成 以下是我创建的cmake工程文件结构&#xff0c;只关注高亮文件夹部分 libout 存放编译生成的.lib文件libsrc 存放编译用的源代码和头文件CMakeLists.txt 此次编译CMak…

【含文档+PPT+源码】基于微信小程序的校园志愿者管理系统的设计与实现

项目介绍 本课程演示的是一款 基于微信小程序的校园志愿者管理系统的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…

SOME/IP--协议英文原文讲解5

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 这一章节…

Linux之Http协议分析以及cookie和session

Linux之Http协议分析以及cookie和session 一.分析请求行与响应行1.1请求行1.1.1资源的URL路径1.1.2常见的方法1.2响应行 二.cookie和session2.1cookie2.2session 一.分析请求行与响应行 在我们简单了解了请求和响应的格式以及模拟实现了请求和响应后我们已经可以通过网页来访问…

vue+element-ui简洁完美实现ju动漫网站

目录 一、项目介绍 二、项目截图 1.项目结构图 2.首页 3.日漫 4.更多>排行榜 5.详情页 6.简单登陆页 三、源码实现 1.路由配置 2.首页 四、总结 一、项目介绍 本项目在线预览&#xff1a;点击访问 本项目为vue项目&#xff0c;以动漫为主题来设计元素&#xff…

协议-WebRTC-HLS

是什么&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09; 实现 Web 浏览器和移动应用程序之间通过互联网直接进行实时通信。允许点对点音频、视频和数据共享&#xff0c;而无需任何插件或其他软件。WebRTC 广泛用于构建视频会议、语音通话、直播、在线游…

本地部署DeepSeek-R1模型(新手保姆教程)

背景 最近deepseek太火了&#xff0c;无数的媒体都在报道&#xff0c;很多人争相着想本地部署试验一下。本文就简单教学一下&#xff0c;怎么本地部署。 首先大家要知道&#xff0c;使用deepseek有三种方式&#xff1a; 1.网页端或者是手机app直接使用 2.使用代码调用API …

有关网络安全的案例分享 如何保障网络安全

网络发展是非常迅速的&#xff0c;互联网在给人们带来生活娱乐便利的同时&#xff0c;也带来了一些安全隐患&#xff0c;这就需要大家做好防骗规范&#xff0c;确保网络安全&#xff0c;51CTO学堂为大家分享下有关网络安全的案例&#xff0c;以供各位参考。 非法获取公民个人信…

2025新鲜出炉--前端面试题(一)

文章目录 1. vue3有用过吗, 和vue2之间有哪些区别2. vue-router有几种路由, 分别怎么实现3. webpack和rollup这两个什么区别, 你会怎么选择4. 你能简单介绍一下webpack项目的构建流程吗5. webpack平时有手写过loader和plugin吗6. webpack这块你平时做过哪些优化吗&#xff1f;7…

变化检测论文阅读合集

1. ChangeCLIP: Remote sensing change detection with multimodal vision-language representation learning 作者&#xff1a;Sijun Dong a, Libo Wang b, Bo Du c, Xiaoliang Meng a,* 年份&#xff1a;2024 研究方法/模型&#xff1a; 重构原始CLIP&#xff1a;提取双时…

viem库

viem是一个用于和以太坊进行交互的javascript库&#xff0c;它提供了简单的API进行智能合约的读取和写入操作&#xff0c;你可以使用它来与区块链上智能合约进行交互&#xff0c;查询链上数据等。 基本功能 1&#xff0c;创建公有客户端 createPublicClient 可以创建一个链接…

2025影视泛目录站群程序设计_源码二次开发新版本无缓存刷新不变实现原理

1. 引言 本设站群程序计书旨在详细阐述苹果CMS泛目录的创新设计与实现&#xff0c;介绍无缓存刷新技术、数据统一化、局部URL控制及性能优化等核心功能&#xff0c;以提升网站访问速度和用户体验。 2. 技术概述 2.1 无缓存刷新技术 功能特点&#xff1a; 内容不变性&#x…

OpenEuler学习笔记(二十三):在OpenEuler上部署开源MES系统

在OpenEuler上部署小企业开源MES&#xff08;制造执行系统&#xff0c;Manufacturing Execution System&#xff09;是一个非常有价值的项目&#xff0c;可以帮助企业实现生产过程的数字化管理。以下是基于开源MES系统&#xff08;如 Odoo MES 或 OpenMES&#xff09;的部署步骤…

大数据项目2:基于hadoop的电影推荐和分析系统设计和实现

前言 大数据项目源码资料说明&#xff1a; 大数据项目资料来自我多年工作中的开发积累与沉淀。 我分享的每个项目都有完整代码、数据、文档、效果图、部署文档及讲解视频。 可用于毕设、课设、学习、工作或者二次开发等&#xff0c;极大提升效率&#xff01; 1、项目目标 本…

c++ haru生成pdf输出饼图

#define PI 3.14159265358979323846 // 绘制饼图的函数 void draw_pie_chart(HPDF_Doc pdf, HPDF_Page page, float *data, int data_count, float x, float y, float radius) { float total 0; int i; // 计算数据总和 for (i 0; i < data_count; i) { tot…

STM32 Unix时间戳

Unix时间戳 Unix 时间戳&#xff08;Unix Timestamp&#xff09;定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数&#xff0c;不考虑闰秒 时间戳存储在一个秒计数器中&#xff0c;秒计数器为32位/64位的整型变量 世界上所有时区的秒计数器相同&#xff0c;不同时区通过…