OrochiZ-

1.基本使用

圆角使用 "border-radius" 属性来控制,默认值为0,即没有圆角。
border-radius | 百分比/像素值

.box {
    width: 300px;
    height: 300px;
    background-color: #336699;
    /* border-radius: 50%; */
    /* 等价于 */
    border-radius: 150px;
}

如图:

2.简写

一个容器共有4个角,border-radius 属性是一个简写属性,用于设置四个 border-*-radius 属性。

  • border-top-left-radius
  • border-top-right-radius
  • border-bottom-right-radius
  • border-bottom-left-radius

下面的代码是等价的

border-radius:10px;
等价于
border-radius:10px 10px 10px 10px;
等价于
border-top-left-radius:10px;
border-top-right-radius:10px;
border-bottom-right-radius:10px;
border-bottom-left-radius:10px;

3.圆角属性值的顺序

圆角属性值依次对应的是:左上-右上-右下-左下,顺时针方向。如图:

border-radius:20px 40px 60px 80px;

等价于

border-top-left-radius:20px;
border-top-right-radius:40px;
border-bottom-right-radius:60px;
border-bottom-left-radius:80px;

4.圆角属性值与圆角大小的关系

我们前面设置的圆角所形成的圆弧实际上是一个正圆,因为这个圆弧的长轴和短轴刚好相等,如图;

即:

border-radius:150px;
等价于
border-radius:150px / 150px
等价于
border-radius:150px 150px 150px 150px / 150px 150px 150px 150px

如果要设置长轴和短轴不相等,就需要另外一种写法:

border-radius:80px / 150px

两种写法对比图:

border-radius:80px / 150px
对比
border-radius:150px / 150px

看图可知,A / B 中A决定椭圆水平轴的大小,而B决定椭圆竖直轴的大小

5.实例:模拟进度条

使用背景图定位来模拟进度条
注意:背景图不能平铺

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

<head>
    <meta charset="utf-8">
    <title>测试</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> 
    <style>
        .progress {
            width: 300px;
            height: 20px;
            background-color: #ccc;
            border-radius: 10px;
            background-image: url(纯蓝.jpg);
            background-repeat: no-repeat;
            background-size: 100% 100%;
            background-position: -300px 0;
        }
    </style>
</head>

<body style="padding:30px;">
    <div class="progress"></div>
</body>
<script>
    //获取元素
    var progress = document.querySelector(".progress")
    
    var x = -300
    //设置定时器
    var timer = setInterval(function(){
        x++
        if(x > 0){
            //清除定时器
            clearInterval(timer)
        }else{
            //走起来
            progress.style.backgroundPosition = `${x}px 0`
        }
    },100)
</script>
</html>

分类:

技术点:

相关文章: