3 css

2023-10-29

定位

为什么需要定位

1 某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子。
2 定位可以在让盒子自由在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。

定位组成

将盒子定在某一位置,也就是来摆盒子。

*定位=定位模式+边偏移{******重要}
定位模式用于指定一个元素在文档中的定位方式,边偏移则决定了该元素的最终位置。

定位模式
它是通过css的position属性来设置,其值可以分为四个。

static 静态定位
relative 相对定位
absolute 绝对定位
fixed 固定定位

边偏移
有top bottom left right 4个属性。

top top:80px; 顶端偏移,定义元素相对其父元素上边线的距离
bottom bottom:80px; 底部偏移,定义元素相对其父元素下边线的距离
left left:80px; 左侧偏移,定义元素相对其父元素左边线的距离
right right:80px; 右侧偏移,定义元素相对其父元素右边线的距离

static静态定位
是元素默认的定方式,无定位的意思

语法

选择器{ position:static}
1 按照标准流摆放位置 并没有脱离标准流,没有边偏移的
1很少用到。

relative定位 重要
相对定位是元素在移动位置的时候,是相对于它原来的位置来说的(自恋型)
选择器{ position:relative}
1 它总是以自己原来的位置移动的 自恋型
2 原来的位置继续占有继续保留 后面的盒子依然以标准流方式对待他 ,不脱标
3 因此,相对定位并没有脱标,它最典型的应用就是给绝对定位当爹的。

absolute定位 重要
绝对定位是元素在移动位置的时候,是相对它的祖先元素来说的。(拼爹型)
选择器{ position:absolute;}

1 如果没有父元素的或者祖先元素没有定位,则以浏览器为准定位(文档为准)

2 如果我们祖先元素有定位(相对,绝对,固定),则以最近一级的有定位祖先元素为参考点移动位置。

3 绝对定位是脱离标准流的。

问题
1 绝对定位与相对定位到底什么使用场景呢?

2 为什么说相对定位给绝对定位当爹?

子绝父相的由来?
弄清楚这个问题,这明白了绝对定位和相对定位的使用场景

这个子绝父相太重要了,是我们学习定位的口诀,是定位中最常用的一种方式见这句话的意思:
子级是绝对定位,父级要用相对定位;

结论 1 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。

2 父盒子需要限定子盒子在父盒子内显示。

3 父盒子布局时,需要占有位置,因此父亲只能是相对定位。

4 fixed 固定定位2

是元素固定到浏览器可视区的位置,主要使用场景:可以在浏览器页面滚动元素的位置不会改变。
选择器{ position:fixed;}
1 以浏览器的可视窗口为参照点移动元素的。
跟父元素没有任何关系。
不随滚动条滚动
2
固定定位不在占有原先的位置。

固定定位也是脱标的,其实固定定位也可以看做是一种特殊的绝对定位。

固定到版心对齐
小算法
1 让固定定位的盒子left:50%,只走到浏览器可视区(也可以看做版心)的一半
2 让固定定位的盒子margin-left版心宽度的一半距离,多走版心快读的一半位置。
就可以让固定定位的盒子贴着版心右侧对齐了。

粘性定位sticky了解

相对和固定的混合

语法规范
选择器{position:sticky; top:10px}

1 以浏览器的可视窗口为参照点移动元素的,
2 保留原来位置。
3 必s须添加上下左右的其中任何一个边偏移。

1 定位叠放次序 在z-index

使用定位布局的时候,可能出现盒子重叠的情况。此时,可以使用z-index来控制盒子的前后次序。z轴
选择器{z-index:1;}
数值可以是正整数,负整数或者0,默认是auto,数值越大,盒子越靠上。
如果属性值相同,则按照书写顺序,后来居上。
不加单位
只有定位的盒子才有这样的属性。

                                             定位的拓展

1 绝对定位的盒子水平垂直居中

margin:0 auto呢!行不行呀? 不能这样设置了

小算法 水平居中
第一步 left走50%;父容器宽度的一半;
第二步 margin 负值 往左边走 自己盒子的一半;
垂直一样

 2 定位的特殊特性

绝对定位和固定定位也和浮动类似

1 行内元素添加绝对或者固定定位,可以直接设置高和宽。
2 块级元素添加绝对或者固定定位,如果不给宽度或者高度时,默认大小是内容的大小。

3 脱标的盒子时候不会触发外边距塌陷的

浮动元素,绝对定位 固定定位元素的都不会触发外边距合并的问题。

4 绝对定位和(固定定位)会完全压住盒子

浮动元素不同,只会压住它下面的标准流的盒子,但是不会压住下面标准流盒子里面的内容。
绝对固定定位不同,会完全压住。

浮动产生的产生的最初目的就是为了文字环绕的效果,文字会环绕浮动元素。

          元素的显示与隐藏、

类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,就会出现。

让一个元素在页面中显示或者隐藏出来

1 display显示隐藏

display:none;隐藏对象
display隐藏元素后,不再占有原来的位置。

display:block;除了转换为块级元素之外,同时还有显示元素的意思。

后面应用及其广泛,搭配js可以做很多网页游戏。

2 visibility显示隐藏
visibility:visible元素可见。
visibility:hidden元素隐藏。
隐藏元素后,继续占有原来的位置。

3 overflow 溢出部分显示和隐藏

指定了如果内容溢出了一个元素框(超过其指定的高度和宽度)时,会发生什么

overflow:visible原本可见 本来。
overflow:hidden隐藏起来
overflow:scroll 溢出的部分显示滚动条; 不溢出也显示
overflow:auto 在需要时添加滚动条; 不溢出不显示 溢出显示。

注意 有定位的盒子,请慎用overflow :hidden属性。

精灵图

1 为什么需要精灵图

为了解决减少服务器接收和发送请求次数,提高网页的加载速度,出现了css精灵技术。

2 精灵图的使用

1 精灵技术主要针对我们的背景图片的使用,就是把多个小背景图片整合到一张大图片中。
2 这些大的图片也叫sprites 精灵图 也称雪碧图。
3 主要移动背景图片的位置,此时用我们的background-position;
4 移动的距离就是这个目标图片的x和y坐标,注意网页中的坐标有所不同。
5 一般我们向上向左移动都是负值。

核心总结

1 主要针对我们的小的背景图片
2 借助我们的背景位置实现
3 一般情况下精灵图都是负值,

3 案例加强

字体图标

主要用于显示网页中通用,常用的一些小图标。

精灵图有诸多优点,但是缺点还是很大的
1 图片文件还是比较大的
2 图片本身放大和缩小会失真。
3 一旦制作完了 更换很复杂。

此时有一种技术出现解决了此问题,就是字体图标iconfont
字体图标为前端工程师提供一种方便高效的图标使用方法,显示的图标,本质上字体。

特点
轻量级 一个图标字体要比一系列的图像要小,一旦字体加载了,图标就会马上渲染出来
,减小服务器的压力。

灵活性 本质其实是文字,可以随意的改变颜色,产生阴影,透明效果 旋转

兼容性 几乎支持所有的浏览器,请放心使用。

注意 不能替换我们的精灵图。
总结

如果遇到一些结构和样式比较简单的小图标,就用字体图标。

复杂的用精灵图来做。

字体图标是一些网页常见的小图标,我们直接网上下载即可,
1 下载

推荐网址 icomoon字库
阿里iconfont字库

2 引入HTML页面
用css引入。
/* 字体声明 */
@font-face {
font-family: ‘icomoon’;
src: url(‘fonts/icomoon.eot?p4ssmb’);
src: url(‘fonts/icomoon.eot?p4ssmb#iefix’) format(‘embedded-opentype’),
url(‘fonts/icomoon.ttf?p4ssmb’) format(‘truetype’),
url(‘fonts/icomoon.woff?p4ssmb’) format(‘woff’),
url(‘fonts/icomoon.svg?p4ssmb#icomoon’) format(‘svg’);
font-weight: normal;
font-style: normal;
font-display: block;}

3 字体图标的追加
如果在工作中 ,原来的字体图标不够的话,我们需要添加新的字体图标到原来的字体文件中。

需要先找到我们压缩包单独selection.json从新上传,然后选中自己想要的图标,从新下载压缩包中,
并替换原来的文件即可。

       css三角

让盒子的宽度和高度为0,,然后给我们border 几px solid transport ,然在给我们四个其中一个颜色为
别的。

                  css使用户界面的样式

1 更改用户的鼠标样式
curson:pointer;

default 小白默认
pointer 小手
move 移动
text 文本
not-allowed 禁止

2表单的轮廓
取消表单的轮廓
outline:0;或者给它一个none值样式之后,就可以去除默认的蓝色区域

3防止拖拽文本域
resize:none;

vertical-align属性应用

css的这个属性的应用使用场景,经常用于设置图片或者表单(行内块元素)的文字垂直对齐。
设置一个元素的垂直对齐方式,但是他只是针对行内元素或者行内块元素。

baseline 默认,元素设置在父元素的基线上

top 把元素的顶端与行中最高元素的对端对齐

middle 把此元素放在父元素的中部

bottom 把元素的顶端与行中最低的元素的顶端对齐。

让图片,表单都属于我们的行内块元素,默认是基线对齐,我们可以让他们与我们的文字实现对齐。

5.2 解决图片底部的默认空白缝隙问题。
bug 图片底册会有一个空白的缝隙,原因是行内块元素会和文字等基线对齐。

1 给图片添加一个 只要不是baseline就行当属性,

2 给图片转换为display:block;

溢出文字用省略号显示

1 单行文本省略号显示
1 先强制一行内显示文本
White-space:nowrap(默认normal自动换行)显示不开我也不允许你换行。
2 超出的部分隐藏
overflow:hidden;
3 文字用省略号替代超出的部分。
text-overflow:elipsis; 省略号。

2 多行文本省略号显示

这种写法有较大的兼容性问题,适合与webkit浏览器或者移动端
overflow:hidden
text-overflow:elipsis;
弹性伸缩盒子模型显示
display:webkti-box
限制在一个块元素显示的文本的行数;
—webit—line-clamp:2;
设置或检索伸缩盒子对象的子元素的排列方式;
-webit—box—orient:vertical;

最好让后台人员做这种效果

常见布局的技巧

1 margin负值的运用
/* ul li:hover {
1 如果盒子没有定位,则鼠标经过添加相对定位即可。
position: relative;
cursor: pointer;
border: 1px solid blue;
} /
ul li:hover {
/
如果li都有定位,则利用的z-index提高层级 */
z-index: 1;
border: 1px solid blue;

    }

2 文字围绕浮动元素

文字完全占满的父盒子 宽度一样 然后给左侧盒子添加一个浮动就可以了。

3 行内块的巧妙运用
如果给我们父盒子添加我们的text-align:center;里面的行内块元素都会实现居中对齐。

4 css三角强化
如果我们只要左侧的盒子;
把border-bottom去掉

把border-top调高。
然后左边去去掉
然后top改成透明色 不要去掉 负责就会出问题 全部去除了。

/* 把上边框宽度调大 /
/
border-top: 100px solid transparent;
border-right: 50px solid skyblue; /
/
左边和下边的边框宽度设置为0 /
/
border-bottom: 0 solid blue;
border-left: 0 solid green; /
/
1.只保留右边的边框有颜色 /
border-color: transparent red transparent transparent;
/
2. 样式都是solid /
border-style: solid;
/
3. 上边框宽度要大, 右边框 宽度稍小, 其余的边框该为 0 */
border-width: 100px 50px 0 0 ;

css初始化

不同浏览器对我们的有些标签的默认值是不同的,为了消除不同浏览器堆html文本呈现的差异
,照顾浏览器的兼容,我们需要对css初始化。

简单理解就是和css初始化是重设置浏览器的样式,

每个人网页都必须有初始化。
/* 把我们所有标签的内外边距清零 */

  • {
    margin: 0;
    padding: 0
    }
    /* em 和 i 斜体的文字不倾斜 /
    em,
    i {
    font-style: normal
    }
    /
    去掉li 的小圆点 */
    li {
    list-style: none
    }

img {
/* border 0 照顾低版本浏览器 如果 图片外面包含了链接会有边框的问题 /
border: 0;
/
取消图片底侧有空白缝隙的问题 */
vertical-align: middle
}

button {
/* 当我们鼠标经过button 按钮的时候,鼠标变成小手 */
cursor: pointer
}

a {
color: #666;
text-decoration: none
}

a:hover {
color: #c81623
}

button,
input {
/* “\5B8B\4F53” 就是宋体的意思 这样浏览器兼容性比较好 */
font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, “\5B8B\4F53”, sans-serif
}

body {
/* CSS3 抗锯齿形 让文字显示的更加清晰 */
-webkit-font-smoothing: antialiased;
background-color: #fff;
font: 12px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, “\5B8B\4F53”, sans-serif;
color: #666
}

.hide,
.none {
display: none
}
/* 清除浮动 */
.clearfix:after {
visibility: hidden;
clear: both;
display: block;
content: “.”;
height: 0
}

.clearfix {
*zoom: 1
}

                                     HTML和css提高部分
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3 css 的相关文章

  • ElasticSearch7.14配置SSL,使用https访问

    ElasticSearch7 14配置SSL 使用https访问 1 生成证书 备注 一定要在es用户中生成证书 1 生成elastic stack ca p12文件 bin elasticsearch certutil ca 2 生成el
  • Validator 用法详解

    validation 用法详解 1 常用注解说明 这是javax validation包中的 主要包括上述的几个注解 注解 描述 AssertFalse 被注释的元素必须为 false AssertTrue 同 AssertFalse De
  • jdbc连接mysql 5.7.17_java jdbc连接mysql报错:No suitable driver found for jdbc

    代码如下 importjava sql publicclassJdbcTest publicstaticvoidmain Stringargs Stringurl jdbc mysql localhost zhoujian Connecti
  • Jeesite4关于权限控制之根据部门公司进行过滤

    在开发中 根据不同的部门或者公司展示相应的数据这种情况是很常见的 但是在jeesite4 中该怎样进行过滤呢 其实在这个方面作者也有考虑 都直接封装好了官方文档请参考 数据权限调用 文档中也明确指出 这个是通过在后台管理系统中 通过打对勾的
  • 基于matlab的大米,大米颗数计算MATLAB软件

    应用背景 大米是人类的主食之一 是稻谷经清理 砻谷 碾米 成品整理等工序后制成的成品 人们购买米大多采用直接称量的方法 市面上也有许多仪器采用光电传感器等方式用于生产加工时米粒的计数 然而这样的方法都比较依赖于设备 不方便人们日常的使用 运

随机推荐

  • 前端mqtt使用总结

    本文转载自https www codenong com cs105863097 主要解决了 mqtt 连接 重连 数据实时传递等问题 简介 MQTT Message Queuing Telemetry Transport 消息队列遥测传输协
  • 电脑网线,网线排序

    网络的使用是越来越普遍 相信不少用户家里的电脑都是使用网线来链接的 当电脑网线不小心被折断了如何来网线排序呢 接下来就来接大家如何来给电脑网线排序 网线排序 双绞线的四对八根导线是有序排列的 对于100M及以上的网络传输速率 每一根线都有定
  • 剪贴板中图片转为BASE64格式

    需求 将图片复制到剪贴板后 希望将图片快捷地转换为BASE64格式 各种在线工具往往需要先将图片保存到本地 然后将本地文件上传 现在考虑将图片保存到本地这一步去掉 直接将图片从剪贴板粘贴到网页的某个元素中 网页触发粘贴事件并获取文件 然后转
  • WebSocket+php实现tail -f 命令的web版本 实时输出日志的增量 web监控log日志

    实现方式是 php的Workerman框架 js的WebSocket PHP workerman 官网地址 可以通过 composer 安装 require walkor workerman 3 5 JS socket WebSocket
  • 数据结构第二版,顺序栈的实现(c语言版)(初始化,入栈,出栈,取栈顶元素 ,遍历)

    include
  • 靶机4 DC-3(过程超详细)

    简介 DC靶场一共有9个 对于学习渗透测试人员 有很大的帮助 是非常不错的靶场 1 下载靶场 靶机名称 DC 3 包含1个flag 下载地址 DC 3 2 VulnHub 2 安装靶场 以DC 1为例 将文件解压 一压缩包形式进行下载 打开
  • 使用DBeaver连接达梦数据库

    下载地址 https dbeaver io download 0 选择类型ODBC 1 下载服务器安装目录的jdbc的jar包 2 编辑驱动设置 上传下载的DmJdbcDriver16 jar 并配置类名与URL模板及端口 3 测试连接 软
  • 浅谈ssm框架分层逻辑

    第一次接触ssm的时候感觉自己就是个无情的码字机器 完全跟着老师敲 每一行代码在干嘛都不是很理解 也经常看到这样的哀嚎 研究了一天后我也算是对这个框架有了一些浅薄的认识 这里我就完全用自己的理解来讲一下 如果说错欢迎指出 ssm Sprin
  • 线程同步和线程死锁

    线程同步 前面刚介绍了有关线程的基本认识 那我们先来思考一个小问题 两个线程之间有没有可能同时对一个资源发起访问呢 答案是肯定 那么在某些情况下这样的同时访问会引发一系列冲突 先来看一个简单的例子 创建两个线程 各自将count增加2500
  • powerdesigner在列表上显示comment的操作

    默认显示选项中没有comment的选项 那么我们就自定义一下 一 自定义comment选项 1 选择菜单 Model gt Extensions 2 插入一行 点击属性 3 鼠标右键点击 Profile 点击 Add Metaclasses
  • Java程序员的福音:Java项目教学之图书管理系统(含源代码)

    1 图书管理系统项目演示 图书管理系统分析 定义Book类 完成主界面和选择 完成查询所有图书 完成添加图书 完成删除图书 完成修改图书 使用Debug追踪调试 2 图书管理系统之标准Book类 我们发现每一本书都有书名和价格 定义一个Bo
  • 京东一面:MySQL 中的 distinct 和 group by 哪个效率更高?

    先说大致的结论 完整结论在文末 在语义相同 有索引的情况下group by和distinct都能使用索引 效率相同 在语义相同 无索引的情况下 distinct效率高于group by 原因是distinct 和 group by都会进行分
  • 【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL源码分析

    一 环境介绍 RK3588主板搭载Android12操作系统 内核是Linux5 10 使用ST的六轴传感器LSM6DSR芯片 二 芯片介绍 LSM6DSR是一款加速度和角速度 陀螺仪 六轴传感器 还内置了一个温度传感器 该芯片可以选择I2
  • Angular4.0_路由守卫

    路由守卫 只有当用户已经登录并拥有某些权限时 才能进入某些路由 一个由多个表单组成的向导 例如注册流程 用户只有在当前路由的组件中填写了满足要求的信息才可以导航到下一个路由 当用户未执行保存操作 而试图离开当前导航时 提醒用户 CanAct
  • 华为机试HJ27 查找兄弟单词

    HJ27 查找兄弟单词 Python 题目 解题思路 代码 结果 题目 解题思路 1 多组输入 需要循环 2 首先定义一个兄弟单词的判断函数 相等则返回False 字符串中的字符排序后相同则为兄弟单词 3 循环所有待查字符串 统计所有兄弟单
  • Windows 远程桌面连接ubuntu及xrdp的一些小问题(远程桌面闪退、连接失败、tab补全功能,无菜单栏,error - problem connecting )

    1 远程桌面闪退 shell可以用的问题 1 需要在该用户目录创建一个 xsession touch xsession 2 里面写 xfce4 session 一句话就行 echo xfce4 session gt xsession 3 然
  • Leetcode刷题指南

    参考 https blog csdn net qq 39521554 article details 79160815 二 刷题方法 方法一 按照题目出现频率刷题 顺序参考文章最后的部分 方法二 标签法 按照网站给大家排列的不同tags 起
  • CentOS 8 下搭建 MySQL 一主一从

    需求 现有两台服务器192 168 137 129和192 168 137 130 在这两台服务器之间搭建一主一从MySQL 129为主 130为从 步骤 通过 CentOS 8通过二进制安装 MySQL 的步骤在 129 和 130 服务
  • Java基础-对象的内存分配与初始化(一定要明白的干货)

    参考 https www cnblogs com wxw7blog p 7349204 html 首先 什么是类的加载 类的加载由类加载器执行 该步骤将查找字节码 classpath指定目录 并从这些字节码中创建一个Class对象 Java
  • 3 css

    定位 为什么需要定位 1 某个元素可以自由的在一个盒子内移动位置 并且压住其他盒子 2 定位可以在让盒子自由在某个盒子内移动位置或者固定屏幕中某个位置 并且可以压住其他盒子 定位组成 将盒子定在某一位置 也就是来摆盒子 定位 定位模式 边偏