背景和边框
在网页开发中,背景和边框是常用的 CSS 属性,可以帮助我们美化网页的外观和布局。
背景属性
CSS 中的 background 属性可以为元素设置背景颜色、图片、渐变色、重复模式等。下面是一些常见的 CSS 背景属性。
background-color
background-color 属性用于设置元素的背景颜色。它可以接受各种颜色值,例如颜色名称、十六进制颜色码、RGB 颜色等。例如,我们可以使用以下代码为一个段落元素设置背景颜色:
p {
  background-color: #f0f0f0;
}
background-image
background-image 属性用于设置元素的背景图片。它可以接受一个图片的 URL 地址作为值。例如,我们可以使用以下代码为一个 div 元素设置背景图片:
div {
  background-image: url('background.jpg');
}
background-repeat
background-repeat 属性用于设置背景图片的重复方式。
默认情况下,背景图片会在水平和垂直方向上重复。
但是我们可以使用 background-repeat 属性来指定只在水平方向上或垂直方向上重复,或者不重复。有以下取值:
no-repeat— 不重复。repeat-x— 水平重复。repeat-y— 垂直重复。repeat— 在两个方向重复。
例如,以下代码可以使背景图片只在水平方向上重复:
div {
  background-image: url('background.jpg');
  background-repeat: repeat-x;
}
background-size
background-size 属性用于设置背景图片的大小。它可以接受像素值和百分比值调整图片的大小。
div {
  background-image: url('background.jpg');
  background-size: 10px 20px;
}
也可以通过 cover 和 contain 关键字:
cover— 浏览器将使图像足够大,使它完全覆盖了盒子区,同时仍然保持其高宽比。在这种情况下,有些图像可能会跳出盒子外。contain— 浏览器将使图像的大小适合盒子内。在这种情况下,如果图像的长宽比与盒子的长宽比不同,则可能在图像的任何一边或顶部和底部出现间隙。
例如,以下代码可以将背景图片缩放到与元素相同的大小:
div {
  background-image: url('background.jpg');
  background-size: cover;
}
background-position
background-position 属性允许您选择背景图像显示在其应用到的盒子中的位置。它使用的坐标系中,框的左上角是 (0,0),框沿着水平 (x) 和垂直 (y) 轴定位。
提示
默认的背景位置值是 (0,0)。
最常见的背景位置值有两个单独的值——一个水平值后面跟着一个垂直值。
你可以使用像 top 和 right 这样的关键字:
.box {
  background-image: url(star.png);
  background-repeat: no-repeat;
  background-position: top center;
}
或者使用长度值和百分比:
.box {
  background-image: url(star.png);
  background-repeat: no-repeat;
  background-position: 20px 10%;
}
你也可以混合使用关键字,长度值以及百分比,例如:
.box {
  background-image: url(star.png);
  background-repeat: no-repeat;
  background-position: top 20px;
}
最后,您还可以使用 4-value 语法来指示到盒子的某些边的距离——在本例中,长度单位是与其前面的值的偏移量。所以在下面的 CSS 中,我们将背景从顶部调整 20px,从右侧调整 10px:
.box {
  background-image: url(star.png);
  background-repeat: no-repeat;
  background-position: top 20px right 10px;
}
background
简写属性,通常使用语法如下:
background =
  <'background-color'>            ||
  <bg-image>                      ||
  <bg-position> [ / <bg-size> ]?  ||
  <repeat-style>                  ||
详见 MDN background。
边框属性
CSS 中的边框属性可以为元素设置边框样式、边框宽度、边框颜色等。
下面是一些常见的 CSS 边框属性。这些边框属性是设置元素四个边框颜色的快捷属性。
border-style
border-style 属性用于设置元素的边框样式。它可以接受 solid、dashed、dotted、double、groove、ridge、inset、outset 和 none 等值。例如,以下代码可以为一个 div 元素设置虚线边框:
div {
  border-style: dashed;
}
border-width
border-width 属性用于设置元素的边框宽度。它可以接受像素值、百分比值等单位。例如,以下代码可以为一个 div 元素设置边框宽度为 2 个像素:
div {
  border-width: 2px;
}
border-color
border-color 属性用于设置元素四个边框颜色。
div {
  border-color: red;
}
border
上述三个属性的简写属性,基本语法如下:
border =
  <line-width>  ||
  <line-style>  ||
  <color>
<div>border简写属性</div>
div {
  border: 1px solid black;
}
使用边框画三角形
可以利用 border 属性特性画三角形。
每个 HTML 元素的盒模型由内容区域、内边距区域、边框区域和外边距区域构成。边框区域的宽度、样式和颜色由 border 属性控制。
当你设置一个元素的一个或几个边框,这个元素会产生视觉效果,就像它有一只或几只“箭头”指向特定方向。这是因为边框实际上是从中心点斜向外延伸的。比如,如果你设置了元素的顶边框,这个元素就会看起来有一只“箭头”指向上方。
所以,你可以通过使用透明边框和可见边框的组合,让元素看起来像一个三角形。
<div class="flex">
  <div class="box1"></div>
  <div class="box2"></div>
</div>
.flex {
  display: flex;
  gap: 10px;
}
.box1 {
  width: 100px;
  height: 100px;
  background-color: #f00;
  box-sizing: border-box;
  border: 30px solid;
  border-color: orange blue green purple;
}
.box2 {
  width: 100px;
  height: 100px;
  background-color: #f00;
  box-sizing: border-box;
  border: 50px solid;
  border-color: orange blue green purple;
}
<div class="flex">
  <div class="up"></div>
  <div class="down"></div>
  <div class="left"></div>
  <div class="right"></div>
  <div class="topleft"></div>
  <div class="topright"></div>
  <div class="bottomleft"></div>
  <div class="bottomright"></div>
</div>
.flex {
  display: flex;
  gap: 10px;
}
.up {
  width: 0;
  height: 0;
  border-left: 30px solid transparent;
  border-right: 30px solid transparent;
  border-bottom: 60px solid red;
}
.down {
  width: 0;
  height: 0;
  border-left: 30px solid transparent;
  border-right: 30px solid transparent;
  border-top: 60px solid red;
}
.left {
  width: 0;
  height: 0;
  border-top: 30px solid transparent;
  border-right: 60px solid red;
  border-bottom: 30px solid transparent;
}
.right {
  width: 0;
  height: 0;
  border-top: 30px solid transparent;
  border-left: 60px solid red;
  border-bottom: 30px solid transparent;
}
.topleft {
  width: 0;
  height: 0;
  border-top: 60px solid red;
  border-right: 60px solid transparent;
}
.topright {
  width: 0;
  height: 0;
  border-top: 60px solid red;
  border-left: 60px solid transparent;
}
.bottomleft {
  width: 0;
  height: 0;
  border-bottom: 60px solid red;
  border-right: 60px solid transparent;
}
.bottomright {
  width: 0;
  height: 0;
  border-bottom: 60px solid red;
  border-left: 60px solid transparent;
}