Appearance
background
此属性是一个简写属性,可以在一次声明中定义一个或多个属性。
css
background: color image position / size repeat attachment clip, ...;
background-clip
默认情况下,背景会延伸到边框所在的区域下层,可以通过 background-clip 属性来调整。
css
background-clip: border-box | padding-box | content-box;
vue
<template>
<div class="h-300 bg">
<div class="h-300 clip"></div>
</div>
</template>
<style lang="scss" scoped>
.bg {
background-color: white;
background-image: linear-gradient(90deg, rgba(200, 0, 0, 0.5) 50%, transparent 0), inear-gradient(rgba(
200,
0,
0,
0.5
) 50%, transparent 0);
background-size: 30px 30px;
}
.clip {
border: 30px solid hsla(0, 0%, 100%, 0.5);
background: white;
background-clip: padding-box;
}
</style>
background-image
如果我们把第二个色标的位置值设置为 0,那它的位置就总是会被浏览器调整为前一个色标的位置值。
vue
<template>
<div class="h-100 linear"></div>
</template>
<style lang="scss" scoped>
.linear {
background: linear-gradient(#fb3 30%, #58a 30%);
}
</style>
vue
<template>
<div class="h-100 linear"></div>
</template>
<style lang="scss" scoped>
.linear {
background: linear-gradient(#fb3 30%, #58a 0);
}
</style>
网格背景
当我们把多个渐变图案组合起来,让它们透过彼此的透明区域显现。
vue
<template>
<div class="h-300 bg"></div>
</template>
<script lang="ts" setup></script>
<style lang="scss" scoped>
.bg {
background-color: white;
background-image: linear-gradient(90deg, rgba(200, 0, 0, 0.5) 50%, transparent 0), linear-gradient(rgba(
200,
0,
0,
0.5
) 50%, transparent 0);
background-size: 30px 30px;
}
</style>
两幅不同线宽、不同颜色的网格图案叠加起来。
vue
<template>
<div class="h-300 bg"></div>
</template>
<style lang="scss" scoped>
.bg {
background-color: #58a;
background-image: linear-gradient(white 2px, transparent 0), linear-gradient(90deg, white 2px, transparent 0),
linear-gradient(hsla(0, 0%, 100%, 0.3) 1px, transparent 0), linear-gradient(90deg, hsla(0, 0%, 100%, 0.3) 1px, transparent
0);
background-size: 75px 75px, 75px 75px, 15px 15px, 15px 15px;
}
</style>
斜向背景
vue
<template>
<div class="h-300 bg"></div>
</template>
<style lang="scss" scoped>
.bg {
background: linear-gradient(45deg, #fb3 25%, #58a 0, #58a 50%, #fb3 0, #fb3 75%, #58a 0);
background-size: 30px 30px;
}
</style>
斜向背景 加强版
可以随意设置角度。
vue
<template>
<div class="h-300 bg"></div>
</template>
<style lang="scss" scoped>
.bg {
background: repeating-linear-gradient(45deg, #fb3, #fb3 15px, #58a 0, #58a 30px);
}
</style>
灵活的同色系条纹
把最深的颜色指定为背景色,同时把半透明白色的条纹叠加在背景色之上来得到浅色条纹。
vue
<template>
<div class="h-300 approximate"></div>
</template>
<style lang="scss" scoped>
.approximate {
background: #58a;
background-image: repeating-linear-gradient(
45deg,
hsla(0, 0%, 100%, 0.2),
hsla(0, 0%, 100%, 0.2) 15px,
transparent 0,
transparent 30px
);
}
</style>
波点
vue
<template>
<div class="h-300 point"></div>
</template>
<style lang="scss" scoped>
.point {
background: #655;
background-image: radial-gradient(tan 30%, transparent 0);
background-size: 30px 30px;
}
</style>
vue
<template>
<div class="h-300 point-2"></div>
</template>
<style lang="scss" scoped>
.point-2 {
background: #655;
background-image: radial-gradient(tan 30%, transparent 0), radial-gradient(tan 30%, transparent 0);
background-size: 30px 30px;
background-position: 0 0, 15px 15px;
}
</style>
棋盘
vue
<template>
<div class="h-300 checkerboard-1"></div>
</template>
<style lang="scss" scoped>
.checkerboard-1 {
background: #eee;
background-image: linear-gradient(45deg, #bbb 25%, transparent 0), linear-gradient(45deg, transparent 75%, #bbb 0),
linear-gradient(45deg, #bbb 25%, transparent 0), linear-gradient(45deg, transparent 75%, #bbb 0);
background-position: 0 0, 15px 15px, 15px 15px, 30px 30px;
background-size: 30px 30px;
}
</style>
vue
<template>
<div class="h-300 checkerboard-2"></div>
</template>
<style lang="scss" scoped>
.checkerboard-2 {
background: #eee;
background-image: linear-gradient(
45deg,
rgba(0, 0, 0, 0.25) 25%,
transparent 0,
transparent 75%,
rgba(0, 0, 0, 0.25) 0
), linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 0, transparent 75%, rgba(0, 0, 0, 0.25) 0);
background-position: 0 0, 15px 15px;
background-size: 30px 30px;
}
</style>
vue
<template>
<div class="h-300 checkerboard-3"></div>
</template>
<style lang="scss" scoped>
.checkerboard-3 {
background: repeating-conic-gradient(#bbb 0, #bbb 25%, #eee 0, #eee 50%);
background-size: 30px 30px;
}
</style>
平行四边形
包裹元素
vue
<template>
<div class="parallelogram-1">
<div class="">包裹元素</div>
</div>
</template>
<style lang="scss" scoped>
.parallelogram-1 {
background-color: #465c73;
transform: skewX(-45deg);
}
.parallelogram-1 > div {
transform: skewX(45deg);
color: #fff;
}
</style>
菱形图片
vue
<template>
<div class="diamond"></div>
</template>
<style lang="scss" scoped>
.diamond {
height: 100px;
width: 100px;
background-image: url(https://upload-bbs.miyoushe.com/upload/2022/12/03/75276545/0a18f6cbe4a0cb62a38266663468543f_3827061868677076228.jpg?x-oss-process=image/auto-orient,0/interlace,1/format,jpg);
background-size: cover;
clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
transition: 0.3s clip-path;
}
.diamond:hover {
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
</style>
梯形
vue
<template>
<div class="nav"><a>点击</a></div>
</template>
<style lang="scss" scoped>
.nav > a {
position: relative;
display: inline-block;
padding: 0.3em 1em 0;
z-index: 0;
}
.nav > a::before {
content: '';
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
background: #ccc;
transform: perspective(0.5em) rotateX(5deg);
transform-origin: bottom;
}
</style>
斑马线
我认为, 就我个人来说, 随机一段废话对我的意义, 不能不说非常重大. 从这个角度来看, 要想清楚, 随机一段废话, 到底是一种怎么样的存在. 随机一段废话的发生, 到底需要如何做到, 不随机一段废话的发生, 又会如何产生. 那么, 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题. 要想清楚, 随机一段废话, 到底是一种怎么样的存在. 我认为, 对我个人而言,随机一段废话不仅仅是一个重大的
vue
<template>
<div class="stripe">
我认为, 就我个人来说, 随机一段废话对我的意义, 不能不说非常重大. 从这个角度来看, 要想清楚, 随机一段废话,
到底是一种怎么样的存在. 随机一段废话的发生, 到底需要如何做到, 不随机一段废话的发生, 又会如何产生. 那么,
本人也是经过了深思熟虑,在每个日日夜夜思考这个问题. 要想清楚, 随机一段废话, 到底是一种怎么样的存在. 我认为,
对我个人而言,随机一段废话不仅仅是一个重大的
</div>
</template>
<style lang="scss" scoped>
.stripe {
padding: 0.5em;
line-height: 1.5;
background: beige;
background-size: auto 3em;
background-origin: content-box;
background-image: linear-gradient(rgba(0, 0, 0, 0.2) 50%, transparent 0);
}
</style>
顶部线
- Ada Catlace
- Alan Purring
- Schrödingcat
- Tim Purrners-Lee
- WebKitty
- Json
- Void
- Neko
- NaN
- Cat5
- Vector
vue
<template>
<ul class="xxx h-200" style="overflow: auto">
<li>Ada Catlace</li>
<li>Alan Purring</li>
<li>Schrödingcat</li>
<li>Tim Purrners-Lee</li>
<li>WebKitty</li>
<li>Json</li>
<li>Void</li>
<li>Neko</li>
<li>NaN</li>
<li>Cat5</li>
<li>Vector</li>
</ul>
</template>
<style lang="scss" scoped>
.xxx {
background: linear-gradient(white 30%, transparent), radial-gradient(at 50% 0, rgba(0, 0, 0, 0.2), transparent 70%);
background-repeat: no-repeat;
background-size: 100% 50px, 100% 15px;
background-attachment: local, scroll;
}
</style>