自学——一个月入门前端④

2023-11-06

本文的内容有关css盒模型

盒模型

在css中,所有的元素都被一个个的“盒子”包围着。

广泛的使用两种盒子,块级盒子和内联盒子。这两种盒子会在页面流和元素之间的关系

block

绝大部分情况下盒子会和父容器一样宽。每个盒子都会换行。width和height属性都可以发挥作用

内边距padding,外边距margin,边框border会将其他元素从当前的盒子周围推开

inline

盒子不会产生换行

width和height属性将不会起作用。垂直方向的内边距、外边距以及边框会应用,但是不会把其他处于inline 状态的盒子推开。水平方向会应用但是会把其他inline 状态的盒子推开。

这真的太抽象了。所以什么是CSS盒模型?

CSS盒模型

主要分为几个内容,分别是Content box , Padding box , Border box , Margin box。由内到外。

content是可以设置width和height。padding是通过padding来设置,border是通过border设置。margin是通过margin来设置。

我理解是padding是内边距,margin是外边距,border就是内外边距的界限的宽度。width和height指的是conent的长和宽。

标准盒模型
.box {
  width: 350px;
  height: 150px;
  margin: 25px;
  padding: 25px;
  border: 5px solid black;
}
替代盒模型
.box {
  box-sizing: border-box;
}

ie标准的盒子模型

这个盒子就是border-box。默认的box-sizing是content-box

那么这个border-size做了什么呢?

bordersize的width = content-width + padding-width(left+right) + border-width(left+right)   

height = content-height + padding-height(top+bottom) + border-height(top+bottom)

例子:下面的两个盒子是一样大的

.box {
  border: 5px solid rebeccapurple;
  background-color: lightgray;
  padding: 40px;
  margin: 40px;
  width: 300px;
  height: 150px;
}

.alternate {
  box-sizing: border-box;
  width: 390px;
  height: 240px;
}

那么利用套娃的盒子模型,可以搞出来很多骚操作。比如外边距套起来,看上去是一个盒子,就能形成一个外边的盒子套着里面的两个盒子。

边框也可以由不同的样式构成不一样的结构

.container {
  border-top: 5px dotted green;
  border-right: 1px solid black;
  border-bottom: 20px double rgb(23,45,145);
}

.box {
  border: 1px solid #333333;
  border-top-style: dotted;
  border-right-width: 20px;
  border-bottom-color: hotpink;
}
<div class="container">
  <div class="box">Change my borders.</div>
</div>
内边距

内边距不能有负数量的内边距。所以值必须是0或正的值。


盒子模型和内联盒子

由span元素创建的哪些内联盒子。

特点就是他的content是忽略的,只能对他的padding,border,margin进行修改。但是不会对其他内容与内敛盒子的关系,所以内边距和边框会和其他的单词重叠。

使用display: inline-block

在使用了这个语句之后,width和height将会生效。padding和marginborder会推开其他元素。



背景与边框

background-color将会对css中进行背景着色。

.box {
  background-color: #567895;
}

h2 {
  background-color: black;
  color: white;
}
span {
  background-color: rgba(255,255,255,.5);
}
<div class="box">
  <h2>Background Colors</h2>
  <p>Try changing the background <span>colors</span>.</p>
</div>
背景图像

background-image 属性可以在一个元素的背景中显示一个图像,这个里面就显示了一个图片。

.a {
  background-image: url(balloons.jpg);
}

.b {
  background-image: url(star.png);
}

发现是可以在这个上面加载color的,但是有些可以有些不行。

控制背景平铺的行为

background-repeat

no-repeat阻止背景重复的平铺

repeat-x仅仅在水平方向上重复y…

repeat两个方向。

.box {
  background-image: url(star.png);
  background-repeat: repeat-y;
}

可以尝试这只有左边的一个star的照片,但是可以使用repeat进行重复。

调节背景图像的大小

background-size 设置长度或者百分比,来调节图像的大小来适应背景。

cover表示完全覆盖了盒子的区域。

contain:表示会调节合适的尺寸

.box {
  background-image: url(balloons.jpg);
  background-repeat: no-repeat;
  background-size: 100px 100px;
  background-size: 100px 10em;
  background-size: cover;
  background-size: contain;
}
背景图像定位

选择背景图片出现在他所应用的盒子位置上,使用了一个坐标系统,其中方框的左上角是(0,0),方框沿水平和垂直y轴定位。

默认的position是0,0

.box {
  background-image: url(star.png);
  background-repeat: no-repeat;
  background-position: 60px 50px;
  如果不讲那么这个是x第一个是从左边开始第二个是从上到下
  等价:left 60px top 50px;
    background-position: top 20px right 10px;在距顶部 20px 和右侧 10px 处:
}
    
渐变背景

使用的是gradient标签。具体到用的时候再看。

.a {
  background-image: linear-gradient(105deg, rgba(0,249,255,1) 39%, rgba(51,56,57,1) 96%);
}

.b {
  background-image: radial-gradient(circle, rgba(0,249,255,1) 39%, rgba(51,56,57,1) 96%);
  background-size: 100px 50px;
}
多个背景图像
.box {
  background-image: url(star.png), url(big-star.png);
}

先写进去的在上层。

背景附加

backgroud-attachment

scoll 背景图片一致不变,scolled内容的时候,还是保持不变。fixes,被fixed到viewport上面了,所以不会进行改变,当element进行scoll的时候,这个图片还是不会改变,始终保持在同一个位置。local绑定到元素上只有在滚动页面的时候才会滚动,绑定到这个元素上后,随着元素的scoll而scoll


边框

border-top border-width border-style

圆角border-radius:10px

border-top-right-radius:右上角的半径

.box {
  border: 10px solid rebeccapurple;
  border-radius: 1em;
  border-top-right-radius: 10% 30%;
}

border-radius 是让四个角都做了一个圆角的效果。后面的对右上角进行了细调。

当使用了两个半径的时候是定义了一个椭圆。这个椭圆和边框的交集形成圆角。


测试

技能测试:背景与边框 - 学习 Web 开发 | MDN (mozilla.org)

任务1:

令这个盒子的边框宽度为 5px,且为黑色实心(solid)的,圆角半径为 10px。
添加背景图片(使用 balloons.jpg URL),调整它的大小,令其覆盖整个盒子。
给予 <h2> 一个半透明的黑色背景颜色,并使文本为白色。

answer:

.box {
  border: 5px solid black;
  border-radius: 10px;
  background-image: url(../images/balloons.jpg);
  background-size: cover;
}

h2 {
  background-color: black;
  color: white;
}

任务2

给这个盒子加一个 5px 的淡蓝色(lightblue)边框,设定左上角圆角半径为 20px,右下角圆角半径为 40px。
标题使用 star.png 图像作为背景图像,左边是一颗居中的星星,右边是重复的星星图案。
确保标题文本不覆盖图像,并且居中——你将需要使用在以前的课程中学到的技术来实现这一点。

没有完成,首先是一个和三个的star,不知道如何去做。还有如何让标题在background下面,无法去做,想到使用layer,但是还是会覆盖background的图像。

第二天想到了就不适用repeat 了,直接加四个星星,然后设置位置。后面测试了一下我们使用层是完全可以实现字体不被覆盖掉的。

@layer one {
  h2 {
    text-align: center;
  }
}
@layer two {
  .box {
    border: 5px lightblue solid;
    border-top-left-radius: 20px;
    border-bottom-right-radius: 40px;
    background-image: url(star.png), url(star.png),
      url(star.png), url(star.png);

    background-repeat: no-repeat;
    background-position: left, right, right top 25%, right bottom 25%;
  }
}

/* 给这个盒子加一个 5px 的淡蓝色(lightblue)边框,设定左上角圆角半径为 20px,右下角圆角半径为 40px。
标题使用 star.png 图像作为背景图像,左边是一颗居中的星星,右边是重复的星星图案。
确保标题文本不覆盖图像,并且居中——你将需要使用在以前的课程中学到的技术来实现这一点。 */


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

自学——一个月入门前端④ 的相关文章

随机推荐

  • MySQL存储结构

    MySQL体系结构 1 网络接入层 提供了应用程序接入MySQL服务的接口 客户端与服务端建立连接 客户端发送SQL到服务端 2 服务层 管理工具和服务 系统管理和控制工具 例如备份恢复 Mysql复制 集群等 连接池 主要负责连接管理 授
  • 客户合并修改需求 @熊哥

    1 客户信息确认列表 如果是 车主信息确认列表 和 车主信息查询列表 调用的标准客户修改功能 保存客户档案时 不校验客户信息重复规则 2 客户信息确认列表 客户信息确认列表 修改为 车主信息确认列表 客户信息合并 修改为 车主信息合并列表
  • Moviepy时间变换time_mirror再遇‘OSError: MoviePy error: failed to read the first frame of video file‘解决示例代码

    老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 在 https blog csdn net LaoYuanPython article details 106478711 moviep
  • leetcode63. 不同路径 II

    https leetcode cn com problems unique paths ii 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在
  • 程序运行结构

    C 支持最基本的三种程序运行结构 顺序结构 选择结构 循环结构 顺序结构 程序按顺序执行 不发生跳转 选择结构 依据条件是否满足 有选择的执行相应功能 循环结构 依据条件是否满足 循环多次执行某段代码 选择结构 if语句 作用 执行满足条件
  • Python使用opencv实现图片定位第三种方式

    encoding utf 8 author Jeff xie 这个方法识别度更高 比cv2 matchTemplate更好 cv2 matchTemplate无定位的图片 这个方法可以 import cv2 bgPath D Reg Car
  • 如何清理台式计算机内存,如何清理电脑运行内存_电脑运行内存不足怎么解决-win7之家...

    我们在电脑上会运行很多我们需要使用的程序 这样的话会带着电脑运行内存不足变卡的问题 这就需要清理先电脑没在用的程序了或者清理些内存也可以缓解的 那么如何清理电脑运行内存呢 下面小编给大家分享电脑运行内存不足的解决方法 解决方法 一 关闭性能
  • 如何在Vue模板中绑定事件?

    让我们来谈谈你在Vue模板中绑定事件的问题吧 首先 我们要先了解什么是事件 在Vue中 事件是指在模板中绑定的一些特殊的HTML属性 比如v on click 它们可以让我们在用户与页面交互时执行一些操作 在Vue模板中绑定事件有两种方式
  • Cocos Creator3D:制作可任意拉伸的 UI 图像

    推荐 将 NSDT场景编辑器 加入你的3D工具链 3D工具集 NSDT简石数字孪生 制作可任意拉伸的 UI 图像 UI 系统核心的设计原则是能够自动适应各种不同的设备屏幕尺寸 因此我们在制作 UI 时需要正确设置每个控件元素的尺寸 size
  • 4.three.js详解PBR物理渲染

    1 标准网格材质 import as THREE from three 导入轨道控制器 import OrbitControls from three examples jsm controls OrbitControls 导入动画库 im
  • java之路 —— 带你了解安全框架Shiro

    文章目录 前言 一 组件 二 主要开发步骤 三 常用的API 四 认证的流程 前言 在学习之前 让我们先了解一下什么是shiro Shiro Apache Shiro 是一个Java安全框架 提供了身份认证 授权 加密和会话管理等功能 它的
  • nginx重启报找不到nginx.pid的解决方法

    nginx被停止 nginx s stop 或者直接杀掉了进程 kill 9 nginx的进程号 后 调用命令 nginx s reload 或者 nginx s reopen 会报错 无法找到 var run nginx pid 文件 这
  • 以树状结构显示文件夹

    以树状结构显示文件夹 题目要求 编写程序 在命令行中以树状结构显示特定的文件夹及其子文件夹 如果子文件是文件则需要显示文件大小 最后统计整个目录的大小 public class Test static long fileNum 0 stat
  • 华为OD机试 C++ 报数问题

    题目 你和你的朋友们围成一个圈玩游戏 从第一个人开始 依次报数 1 2 3 当数到3的时候 那个人就得退出游戏 然后从他的下一个朋友继续开始 1 2 3 同样的 数到3的人又得退出 这样一直进行下去 直到圈里只剩下一个人 人会是谁 任务 给
  • Android Studio更新升级方法

    android studio一直在更新完善 为了与时俱进 我们当然要将工具更新到最新版本啦 其实更新本来是很简单 只要从Android Studio Help菜单中选择Check for Update即可 但因为 伟大的墙 实际更新失败 下
  • JS浏览器调试:Browser对象

    好久不搞前端 最近在搞钉钉的第三方应用的时候 前端给我露了一手 涉及到知识主要是JavaScript的Browser对象 首先现在很多PC客户端现在技术选型选择会选择nodejs这类 像nw js或者Electron 都会涉及到chromi
  • 给input框赋值成功后input框不能进行编辑

    选中一项后 input框不能进行编辑
  • 【工具】(z-library平替)Clibrary中文图书馆,电子书大全

    目录 新版目录 更新于2023 7 11 一 更新时间和简介 二 步骤 老版目录 接口无法使用 1 z library和Clibrary简介 2 Clibrary网址 3 具体操作界面 新版目录 更新于2023 7 11 一 更新时间和简介
  • three.js 制作地球标注的两种方法

    一 Sprite精灵标签 效果图 精灵标签 标签永远面向相机 function createTxt position name var texture new THREE CanvasTexture getCanvasFont var fo
  • 自学——一个月入门前端④

    本文的内容有关css盒模型 盒模型 在css中 所有的元素都被一个个的 盒子 包围着 广泛的使用两种盒子 块级盒子和内联盒子 这两种盒子会在页面流和元素之间的关系 block 绝大部分情况下盒子会和父容器一样宽 每个盒子都会换行 width