css3 滑动-CSS美化滑动输入栏输入范围

对于原来的输入范围,如何自定义滑动输入栏的样式一直是我心中的一道坎。 一般情况下,很容易美化到这个程度。

为什么这么容易?因为有对应的伪元素可以改变

<pre class="cm-s-default" style="color:rgb( 89 , 89 , 89 );margin:0px;padding:0px;background:none 0% 0% / auto repeat scroll padding-box border-box rgba( 0 , 0 , 0 , 0 )">::-webkit-slider-container {
/*可以修改容器的若干样式*/
}
::-webkit-slider-runnable-track {
/*可以修改轨道的若干样式*/
}
::-webkit-slider-thumb {
/*可以修改滑块的若干样式*/
}

然而,没有一种风格被一扫而空。 如果你想定义像下面这样的样式,纯CSS可能无法实现

注意:Firefox 有一个单独的伪类需要更改,本文讨论 Chrome 实现

1.我的实现思路

既然没有专门的伪元素来改变扫过部分的颜色,而且只有滑块是可移动的,那么是否可以对滑块进行操作呢?

假设滑块左侧有一个圆圈,它跟随滑块,

当圆足够长时,可以完全覆盖一侧的轨迹,并且在可见范围内,是否可以代表左侧扫过的部分? 示意图如下(左边半透明表示滑块在外面)

尝试过像这样的伪元素视图

css3标题栏滑动效果_css3实现页面滑动切换_css3 滑动

::-webkit-slider-thumb::after{
  /*本想绘制一个足够长的矩形*/
}

不幸的是,伪元素不能在伪元素内重新生成。

那么,如何在元素外画一个圆呢?

2、通过border-image在元素外部绘制图形

有什么办法可以在元素之外绘制图形吗? 想了想,还有box-shadow和outlinecss3 滑动,不过好像不太适合这些情况。 我们需要画的是一个规格可控的圆css3 滑动,而这两种形式都不能很好的控制形状。 还有其他办法吗?

真的有! 前两天刚听到张新旭老师的一篇文章:被高估的border-image属性,特点之一就是在元素外创建一个图像,而且不占任何空间。赶紧试试,用这里长度为99vw(刚好盖住滑块),代码如下

css3实现页面滑动切换_css3 滑动_css3标题栏滑动效果

::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background-color: #f44336;
    border: 1px solid transparent;
    margin-top: -8px;
    border-image: linear-gradient(#f44336,#f44336) 0 fill / 8 20 8 0 / 0 0 0 99vw; /*绘制元素外矩形*/
}

效果如下

注意几点:

为了使border-image生效,必须指定border,这里是border: 1pxsolid透明; 矩形是由线性渐变绘制的线性渐变 (#f44336, #f44336) border-image 中的 8 20 8 0 表示 border-image -width,即距上、右、下、左的距离。 由于滑块本身的大小是20 * 20,所以这样可以确定高度为4(20 - 8- 8),位置为滑块本身的最左边(距离左边为20) 0 0 0 border-image中的99vw表示border-image-outset扩展尺寸,这里指的是99vw向左扩展的距离

接下来,可以通过overflow:hidden隐藏外部部分

css3实现页面滑动切换_css3 滑动_css3标题栏滑动效果

::-webkit-slider-container {
    /*其他样式*/
    overflow: hidden;
}

完整代码可访问:输入范围(codepen.io)点击预览

下面附上完整代码(codepen最近不太稳定)

[type="range"] {
    -webkit-appearance: none;
    appearance: none;
    margin: 0;
    outline: 0;
    background-color: transparent;
    width: 500px;
}
[type="range"]::-webkit-slider-runnable-track {
    height: 4px;
    background: #eee;
}
[type="range" i]::-webkit-slider-container {
    height: 20px;
    overflow: hidden;
}
[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background-color: #f44336;
    border: 1px solid transparent;
    margin-top: -8px;
    border-image: linear-gradient(#f44336,#f44336) 0 fill / 8 20 8 0 / 0px 0px 0 2000px;
}

三、仍存在一定的局限性

css3 滑动_css3标题栏滑动效果_css3实现页面滑动切换

虽然上述实现成本很低,但与传统实现相比,只减少了一行在元素外部绘制正方形。

border-image: linear-gradient(#f44336,#f44336) 0 fill / 8 20 8 0 / 0px 0px 0 2000px;

但由于超出隐藏的方法剪掉了多余的部分,滑块的边缘是“一刀切”,所以如果要求滑块有圆角,这种实现方法就行不通了

如果您有什么好的意见欢迎留言讨论

四、简单总结

关于border-image-outset这个属性,之前在MDN上已经看到过,只是简单了解了一下,觉得鸡肋。 现在看来这些属性并不是没有用,只是还没有遇到合适的应用场景。 以下是一个简短的总结:

滑块有 3 个伪元素,可以自定义容器、轨道和滑块。 伪元素中不能再嵌套伪元素。 元素之外,有box-shadow、outline、border-image 3种方法。 边框图像可以使用任何格式。 图像,包括 CSS 渐变,无法实现圆角

当然,这种想法只是一种“补救措施”。 与 Firefox 一样,它完全支持自定义样式。 遗憾的是,桌面端依然以Chrome为主,所以只能期待Chrome后期的更新了。最后,如果您觉得不错,对您有帮助,请点赞、收藏、转发

CSS颜色、字体大小设置

CSS是网站开发的后端开发工具,可以用来设置网页的颜色、字体大小、边框等属性。 本文将介绍如何使用CSS设置网页的颜色、字体大小、边框等属性。

1. 颜色设置

CSS中的颜色设置非常简单,可以使用RGB、HEX、RGBA等颜色代码来设置颜色。 以下是一些常用的颜色代码:

RGB()函数:用于设置红、绿、蓝三基色的值,可以用来设置任意颜色。 例如:

  1. color: rgb(255, 0, 0);

2.RGBA()函数:用于设置红、绿、蓝、透明度四基色的值,可以用来设置任意颜色。 例如:

  1. color: rgb(255, 0, 0, 0.5);

3.HEX()函数:用于设置十六进制颜色代码,可用于设置特定的颜色。 例如:

字体大小设置大字_css 设置字体大小_字体大小设置在哪

  1. color: #ff0000;

4、HSL()函数:用于设置色调、饱和度、色温三个属性的值,可以用来设置任意颜色。 例如:

  1. color: hsl(120, 100%, 50%);

除了上述颜色代码外,还可以使用十六进制颜色代码,并使用比例、百分比等方法来设置颜色。

字体大小设置大字_字体大小设置在哪_css 设置字体大小

2. 字体大小设置

CSS中的字体大小设置非常简单,可以使用font-size等属性来设置字体大小。 以下是一些常用的字体大小代码:

1.font-size: xx-large;/设置字体大小为小/

font-size:small;/设置字体大小为大/font-size:medium;/设置字体大小为中/

4.font-size: large;/设置字体大小为小/font-size: x-large;/设置字体大小为超大/

除了上述字体大小代码外,还可以使用比例、百分比等方法来设置字体大小。

3. 边框设置

CSS中的边框设置非常简单,可以使用border等属性来设置边框的样式。 以下是一些常用的边界代码:

css 设置字体大小_字体大小设置在哪_字体大小设置大字

1.border: 1px Solid black;/设置边框为1像素宽css 设置字体大小,黑色/

border: 2pxsolid red;/设置边框为2像素宽,红色/border:3pxsolidblue;/设置边框为3像素宽,蓝色/

4.border: 4px Solid green;/设置边框为4像素宽,绿色/

除了上面的边框代码外,还可以使用比例、百分比等方法来设置边框。

综上所述,CSS中颜色和字体大小的设置非常简单,可以使用上面的颜色代码和字体大小代码来设置。 但需要注意的是css 设置字体大小,CSS 设置的效果会受到浏览器支持、CSS 属性顺序等激励因素的影响。 因此,在实际开发中,建议先在不同浏览器上进行测试,确保设置效果符合预期,然后再在实际网站上使用。