首页 > 其他分享 >CSS高级技巧

CSS高级技巧

时间:2024-11-08 21:18:54浏览次数:3  
标签:技巧 vertical color align 高级 height width border CSS

一、精灵图

1、为什么需要精灵图

1)为了有效地减少服务器接收和发送请求的次数提高页面的加载速度,出现了 CSS 精灵技术(也称 CSS Sprites、CSS 雪碧)。

2)核心原理:将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了。

2、精灵图的使用

1)精灵图主要针对于小的背景图片使用。

2)移动背景图片位置 --- background-position

3)一般情况下精灵图都是负值

  • x轴右边走是正值,左边走是负值 
  • y轴下边走是正值,上边走是负值

3、精灵图案例 

效果如下:

 具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>精灵图练习</title>
    <style>
        div {
            float: left;
            background: url(images/abcd.jpg) no-repeat;
        }

        .box1 {
            width: 107px;
            height: 107px;
            background-position: -253px -563px;
        }

        .box2 {
            width: 64px;
            height: 108px;
            background-position: -324px -143px;
        }

        .box3 {
            width: 110px;
            height: 116px;
            background-position: -256px -275px;
        }

        .box4 {
            width: 115px;
            height: 110px;
            background-position: -365px -561px;
        }

        .box5 {
            width: 116px;
            height: 110px;
            background-position: -476px -425px;
        }

        .box6 {
            width: 100px;
            height: 111px;
            background-position: -476px 0px;
        }
    </style>
</head>

<body>
    <div class="box1">x</div>
    <div class="box2">i</div>
    <div class="box3">n</div>
    <div class="box4">y</div>
    <div class="box5">u</div>
    <div class="box6">e</div>
</body>

</html>

二、字体图标

1、产生与优点 

1)使用场景: 主要用于显示网页中通用、常用的一些小图标。  

2)字体图标展示的是图标,本质属于字体

3)优点

  • 灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等
  • 兼容性:几乎支持所有的浏览器

4)注意: 字体图标不能替代精灵技术。

2、字体图标的下载

3、字体图标的引入

 1)把下载包里面的 fonts 文件夹放入页面根目录下。

2)在 CSS 样式中全局声明字体: 把这些字体文件通过css引入到我们页面中。  

 @font-face {
   font-family: 'icomoon';
   src:  url('fonts/icomoon.eot?7kkyc2');
   src:  url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),
     url('fonts/icomoon.ttf?7kkyc2') format('truetype'),
     url('fonts/icomoon.woff?7kkyc2') format('woff'),
     url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');
   font-weight: normal;
   font-style: normal;
 }

3)html 标签内添加小图标。  

<span></span>

4)给标签定义字体。  

 span {
   font-family: "icomoon";
 }

4、字体图标的追加

把压缩包里面的 selection.json 重新上传,然后选中自己想要新的图标,重新下载压缩包,并替换原来的文件。

三、CSS三角

  • 我们用css 边框可以模拟三角效果
  • 宽度高度为0
  • 4个边框都要写, 只保留需要的边框颜色,其余的不能省略,都改为 transparent 透明
  • 为了照顾兼容性 低版本的浏览器,加上 font-size: 0; line-height: 0;  

举例:

具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三角制作</title>
    <style>
        .box1,
        .box2 {
            width: 0;
            height: 0;
            line-height: 0;
            font-size: 0;
            border: 100px solid;
            border-top-color: palegreen;
            border-bottom-color: salmon;
            border-left-color: blue;
            border-right-color: brown;
        }

        .box2 {
            margin-top: 60px;
            border-color: transparent;
            border-left-color: pink;
        }
    </style>
</head>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

</html>

京东三角案例 

效果如下: 

具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三角练习</title>
    <style>
        .box {
            position: relative;
            width: 200px;
            height: 300px;
            background-color: plum;
        }

        span {
            position: absolute;
            top: -10px;
            right: 15px;
            width: 0;
            height: 0;
            line-height: 0;
            font-size: 0;
            border: 5px solid transparent;
            border-bottom-color: plum;
        }
    </style>
</head>

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

</html>

四、CSS用户界面样式

1、鼠标样式 cursor

1)语法

 li {
 	cursor: pointer; 
 }

2)设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。

2、轮廓线 outline

给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。

input {
 	outline: none; 
}

3、防止拖拽文本域 resize

文本域右下角是不可以拖拽的。  

textarea{ 
 	resize: none;
}

五、vertical-align 属性应用

1、vertical-align 属性应用  

vertical-align 属性使用场景: 经常用于设置图片或者表单(行内块元素)和文字垂直对齐。  

语法

vertical-align : baseline | top | middle | bottom 

属性

2、图片表单对齐方式 

1)图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。

具体实现:

<!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 {
            /* vertical-align: top; */
            /* vertical-align: bottom; */
            /* 图片和文字垂直居中 */
            /* vertical-align: middle; */
            /* 图片和文字基线对齐 */
            vertical-align: baseline;
        }

        textarea {
            vertical-align: baseline;
        }
    </style>
</head>

<body>
    <div class="box">
        <img src="images/shu.png" alt="">我的馨悦老师
    </div>
    <textarea name="" id="" cols="30" rows="10"></textarea>请您留言
</body>

</html>

 2)给图片、表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐 。

具体实现:

<!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 {
            /* vertical-align: top; */
            /* vertical-align: bottom; */
            /* 图片和文字垂直居中 */
            vertical-align: middle;
            /* 图片和文字基线对齐 */
            /* vertical-align: baseline; */
        }

        textarea {
            vertical-align: middle;
        }
    </style>
</head>

<body>
    <div class="box">
        <img src="images/shu.png" alt="">我的馨悦老师
    </div>
    <textarea name="" id="" cols="30" rows="10"></textarea>请您留言
</body>

</html>

3、解决图片底部默认空白缝隙问题 

  • 给图片添加 vertical-align:middle | top| bottom 等。
  • 把图片转换为块级元素 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>
        div {
            width: 300px;
            border: 2px solid rgb(255, 34, 0);
        }

        img {
            vertical-align: bottom;
            /* display: block; */
        }
    </style>
</head>

<body>
    <div>
        <img src="images/shu.png" alt="">
    </div>
</body>

</html>

六、溢出的文字省略号显示

 

单行文本溢出显示省略号必须满足三个条件:

  /*1. 先强制一行内显示文本*/
   white-space: nowrap;  ( 默认 normal 自动换行)
   
  /*2. 超出的部分隐藏*/
   overflow: hidden;
   
  /*3. 文字用省略号替代超出的部分*/
   text-overflow: ellipsis;

七、常见布局技巧

1、margin 负值运用 

  • 让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框
  • 鼠标经过某个盒子的时候,提高当前盒子的层级(如果没有定位,则加相对定位(保留位置);如果有定位,则加z-index)  

举例:

具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>margin负值的巧妙应用</title>
    <style>
        ul li {
            position: relative;
            float: left;
            list-style: none;
            width: 160px;
            height: 200px;
            border: 1px solid red;
            margin-left: -1px;
        }

        ul li:hover {
            /* 1. 如果盒子没有定位,则鼠标经过添加相对定位即可 */
            position: relative;
            border: 1px solid slateblue;
        }

        ul li:hover {
            /* 2.如果li都有定位,则利用 z-index提高层级 */
            z-index: 1;
            border: 1px solid rgb(114, 230, 250);
        }
    </style>
</head>

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
</body>

</html>

2、文字围绕浮动元素

效果如下:

 具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文字围绕浮动元素的妙用</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        div {
            width: 300px;
            height: 100px;
            margin: 0px auto;
            padding: 5px;
            background-color: pink;
        }

        .img {
            float: left;
            width: 150px;
            height: 90px;
            margin-right: 5px;
        }

        .img img {
            width: 100%;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="img">
            <img src="images/img.png" alt="">
        </div>
        <p>
            【集锦】热身赛-巴西0-1秘鲁 内马尔替补两人血染赛场
        </p>
    </div>
</body>

</html>

3、行内块巧妙运用

  • 把这些链接盒子转换为行内块, 之后给父级指定 text-align:center;
  • 利用行内块元素中间有缝隙,并且给父级添加 text-align:center; 行内块元素会水平会居中  

举例:

具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>行内块的巧妙运用</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box {
            text-align: center;
        }

        .box a {
            display: inline-block;
            width: 36px;
            height: 36px;
            background-color: #f7f7f7;
            border: 1px solid #ccc;
            text-align: center;
            line-height: 36px;
            color: #333;
            font-size: 14px;
            text-decoration: none;
        }

        .box .prev,
        .box .next {
            width: 85px;
        }

        .box .one,
        .box .elp {
            background-color: #fff;
            border: 0;
        }

        .box input {
            width: 45px;
            height: 36px;
            border: 1px solid #ccc;
            outline: none;
        }

        .box button {
            width: 60px;
            height: 36px;
            background-color: #f7f7f7;
            border: 1px solid #ccc;
        }
    </style>
</head>

<body>
    <div class="box">
        <a href="#" class="prev">&lt;&lt;上一页</a>
        <a href="#" class="one">1</a>
        <a href="#">2</a>
        <a href="#">3</a>
        <a href="#">4</a>
        <a href="#">5</a>
        <a href="#" class="elp">…</a>
        <a href="#" class="next">&gt;&gt;下一页</a>
        到第 <input type="text">
        页 <button>确定</button>
    </div>
</body>

</html>

4、CSS 三角强化

原理:

 

具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS三角强化的巧妙运用</title>
    <style>
        .box {
            width: 0;
            height: 0;
            /* 1. 上边框宽度要大, 右边框宽度稍小, 其余的边框该为 0 */
            border-width: 100px 50px 0 0;
            /* 2.只保留右边的边框有颜色 */
            border-color: transparent red transparent transparent;
            /* 3. 样式都是solid */
            border-style: solid;
        }
    </style>
</head>

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

</html>
三角强化案例 

效果如下:

 具体实现:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS三角强化小练习</title>
    <style>
        .box {
            width: 160px;
            height: 24px;
            line-height: 24px;
            border: 1px solid red;
        }

        .miaosha {
            position: relative;
            float: left;
            width: 90px;
            height: 100%;
            background-color: red;
            text-align: center;
            color: #fff;
            font-weight: 700;
            margin-right: 8px;

        }

        .miaosha i {
            position: absolute;
            right: 0;
            top: 0;
            width: 0;
            height: 0;
            border-color: transparent #fff transparent transparent;
            border-style: solid;
            border-width: 24px 10px 0 0;
        }

        .yuanjia {
            font-size: 12px;
            color: gray;
            text-decoration: line-through;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="miaosha">1650 <i></i> </div>
        <span class="yuanjia">2900</span>
    </div>
</body>

</html>

有一天你将破茧而出,成长得比别人期待的还要美丽,但这个过程会很痛很辛苦,有时候还会觉得灰心,面对汹涌而来的现实,觉得自己渺小无力,但这也是生活里的一部分,做好你现在能做的,然后相信一切都会好的。 

标签:技巧,vertical,color,align,高级,height,width,border,CSS
From: https://blog.csdn.net/qq_69347371/article/details/143630393

相关文章

  • C语言 循环高级
    时间:2024.11.6一、学习内容1、无限循环无限循环:循环永远停不下来注意点:无限循环因为永远停不下来,所以下面不能再写其他的代码了2、break跳转控制语句:在循环的过程中,跳到其他语句上执行 #include<stdio.h>intmain(){ intcount=0; inti;//利用for循环去......
  • CSS实现图片3D立体效果
    概述本文主要讲述如何通过CSS简单的设置就可以实现图片的3D立体效果。3D立体效果当鼠标移入某一个图片上时,其余图片会像该图片倾斜。具体实现静图如下:倒影效果图片会有一个倒影效果,其代码如下:<style>img{-webkit-box-reflect:below1pxli......
  • PDF阅读神器~已破去广解锁高级版
    前言AdobeAcrobatRead的最新专业解锁版,是一款专为手机用户设计的PDF阅读工具,其卓越的性能让PDF文件的阅读变得异常便捷,该版本去除广解锁会员功能,让大家在阅读PDF的时候,能有一个清爽、不被打扰的环境。安装环境[名称]:AdobeAcrobatRead[版本]:24.9.1[大小]:150MB   [......
  • 提升谷歌购物广告优势的几个Feed技巧
    谷歌购物广告(ProductListingAds,PLAs)是一种特别基于产品的广告方式,其展示位置在Google搜索结果页和购物页面上尤为显眼。对于电商卖家而言,使用谷歌购物广告有以下几个显著优势:广告位于谷歌搜索结果顶部,最引人注意的位置。直接展示产品的图片信息,吸引用户视线。包含价......
  • nodejs 18.20.4 juice 库将html中的全局CSS格式, 转化为每个元素内联的CSS格式
    执行下面命令,安装nodejs和npmubuntu@ubuntu22:~$sudoaptupdateubuntu@ubuntu22:~$sudoaptinstallnpm#npm是Node.js的包管理工具ubuntu@ubuntu22:~$sudoaptinstall-ycurlubuntu@ubuntu22:~$curl-fsSLhttps://deb.nodesource.com/setup_18.x|sudo-Eb......
  • 【Spring Boot安全】Spring Boot 测试技巧
    原创1ang小羊安全屋一、SpringBoot介绍SpringBoot是一个开源的Java框架,旨在简化Spring应用的创建和部署过程。它是Spring平台和第三方库生态的一部分,由Pivotal团队开发。SpringBoot旨在让开发者能够更快速地启动和运行新的Spring应用程序,通过提供默认的配置帮助快速启......
  • 带你用HTML+CSS+JS实现动态滚动骰子投掷效果!
    今天带大家用HTML+CSS+JS实现动态骰子投掷效果,下面来看看实现的效果:点击开始投掷,骰子开始滚动。点击停止投掷,骰子面会随机定在一个点数 那么如何实现呢?请听我细细讲解:一、骰子面的样式与布局1、样式:1、其中每一面大量的运用了flex布局来实现了骰面上圆点的位置。2......
  • iOS-Tagent上新了,iOS17的wda的部署小技巧你get了吗
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言之前有很多同学一直在问如何在iOS17的设备上安装wda?其实我们iOS-Tagent已经更新兼容iOS17以上的设备啦,虽然无法直接通过AirtestIDE进行连接,但是可以先......
  • css基础知识
    css基础知识css基础知识1.认识css概念写在哪如何写2.选择器初级id与class命名选择器分类(初级版)选择器权重3.基础知识介绍1.认识css概念CSS(英文全称:CascadingStyleSheets),层叠样式表。它是网页的装饰者,用来修饰各标签排版(大小、边距、背景、位置等)、改变字体的样式(......
  • Hive高级篇
    1.分区/分桶数据模型讲Hive分区之前,我们先来说一下Hive的数据模型,Hive的数据模型主要有以下四种:​在大数据中,最常见的一种思想就是分治,我们可以把大文件切割成一个个的小文件,这样每次操作小文件时就会容易许多。同样的道理,在Hive中也是支持的,我们可以把大的数据......