CSS 剪辑在 select 盒子上不起作用?
CSS clip wont work on a select box?
我想剪辑这个select框:
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>
这是我的 css 代码:
select {
position:absolute;
clip:rect(1px,1px,5px,5px);
top:0;
left:0;
z-index:1;
}
但整个元素都呈现为不可见。怎么了?
不,clip
确实适用于 select
元素,但您给出的值错误(而且非常小)。值(顶部、右侧、底部和左侧)指定距框的内部顶部边框边缘的偏移量,右侧和底部的偏移量应始终大于左侧和顶部的偏移量,以便剪辑正常工作。
作为此函数的输入提供的参数应如下所示:
- 裁剪框的顶部距离原始框的顶部 1px
- 裁剪后的框右侧距原始框左侧 5px
- 裁剪框的底部距原始框的顶部 5px
- 裁剪框的左侧距离原始框的左侧 1px。
因此,您的裁剪框将是一个矩形,其边缘(左上角、右上角、右下角、左下角)位于 (1,1) (5,1) (5,5) (1,5).
下面是一个示例片段。 (注意: 该值应该足够大,您可以看到一些东西。在下面的代码片段中,您只会看到一个只有背景颜色的 4 x 4 正方形)。
select {
position: absolute;
clip: rect(1px, 5px, 5px, 1px);
top: 0;
left: 0;
z-index: 1;
background: red;
}
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>
如果你只想剪掉箭头,那么你可以使用下面代码片段中提供的参数。但请注意,参数将取决于内容的宽度和高度。如果内容更宽或更高,则必须进行更改。
select {
position: absolute;
clip: rect(0px, 75px, 20px, 0px);
top: 0;
left: 0;
z-index: 1;
background: red;
}
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>
此外,请注意 clip
属性 已被弃用 并且最好使用 clip-path
属性。 clip-path
等效项可在以下代码段中找到。您可以在我的回答 .
中详细了解这两个属性之间的区别
注意: clip-path
目前仅受 WebKit 支持(Firefox 支持 url
属性)。但这是前进的方向。
select {
position: absolute;
-webkit-clip-path: inset(1px calc(100% - 5px) calc(100% - 5px) 1px);
clip-path: inset(1px calc(100% - 5px) calc(100% - 5px) 1px);
top: 0;
left: 0;
z-index: 1;
background: red;
}
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>
我想剪辑这个select框:
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>
这是我的 css 代码:
select {
position:absolute;
clip:rect(1px,1px,5px,5px);
top:0;
left:0;
z-index:1;
}
但整个元素都呈现为不可见。怎么了?
不,clip
确实适用于 select
元素,但您给出的值错误(而且非常小)。值(顶部、右侧、底部和左侧)指定距框的内部顶部边框边缘的偏移量,右侧和底部的偏移量应始终大于左侧和顶部的偏移量,以便剪辑正常工作。
作为此函数的输入提供的参数应如下所示:
- 裁剪框的顶部距离原始框的顶部 1px
- 裁剪后的框右侧距原始框左侧 5px
- 裁剪框的底部距原始框的顶部 5px
- 裁剪框的左侧距离原始框的左侧 1px。
因此,您的裁剪框将是一个矩形,其边缘(左上角、右上角、右下角、左下角)位于 (1,1) (5,1) (5,5) (1,5).
下面是一个示例片段。 (注意: 该值应该足够大,您可以看到一些东西。在下面的代码片段中,您只会看到一个只有背景颜色的 4 x 4 正方形)。
select {
position: absolute;
clip: rect(1px, 5px, 5px, 1px);
top: 0;
left: 0;
z-index: 1;
background: red;
}
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>
如果你只想剪掉箭头,那么你可以使用下面代码片段中提供的参数。但请注意,参数将取决于内容的宽度和高度。如果内容更宽或更高,则必须进行更改。
select {
position: absolute;
clip: rect(0px, 75px, 20px, 0px);
top: 0;
left: 0;
z-index: 1;
background: red;
}
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>
此外,请注意 clip
属性 已被弃用 并且最好使用 clip-path
属性。 clip-path
等效项可在以下代码段中找到。您可以在我的回答
注意: clip-path
目前仅受 WebKit 支持(Firefox 支持 url
属性)。但这是前进的方向。
select {
position: absolute;
-webkit-clip-path: inset(1px calc(100% - 5px) calc(100% - 5px) 1px);
clip-path: inset(1px calc(100% - 5px) calc(100% - 5px) 1px);
top: 0;
left: 0;
z-index: 1;
background: red;
}
<select>
<option value="">select year</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
</select>