Javascript 我如何设计一个<;输入类型=";“范围”&燃气轮机;在暗影树里面?
我用Javascript创建了一个,在我的自定义元素中有一个类型为range的输入。现在我想设计它,但它不起作用 我尝试用Javascript和链接到我的HTML页面的外部CSS文件设计元素的样式。 我使用Javascript 我如何设计一个<;输入类型=";“范围”&燃气轮机;在暗影树里面?,javascript,html,css,Javascript,Html,Css,我用Javascript创建了一个,在我的自定义元素中有一个类型为range的输入。现在我想设计它,但它不起作用 我尝试用Javascript和链接到我的HTML页面的外部CSS文件设计元素的样式。 我使用::-webkit滑块thumb来设置thumb的样式,因为我希望它是一个圆 (function(){ const template = document.createElement("template"); template.innerHTML = ` <st
::-webkit滑块thumb
来设置thumb的样式,因为我希望它是一个圆
(function(){
const template = document.createElement("template");
template.innerHTML = `
<style>
</style>
<input type="range" min="-100" max="100" value="0">
`;
class SliderElement extends HTMLElement {
constructor() {
super();
let shadowRoot = this.attachShadow({mode: 'open'});
this.shadowRoot.appendChild(template.content.cloneNode(true));
}
connectedCallback() {
}
}
customElements.define('slider-element', SliderElement);
})();
(函数(){
const template=document.createElement(“模板”);
template.innerHTML=`
`;
类SliderElement扩展了HtmleElement{
构造函数(){
超级();
让shadowRoot=this.attachShadow({mode:'open'});
this.shadowRoot.appendChild(template.content.cloneNode(true));
}
connectedCallback(){
}
}
自定义元素。定义('slider-element',SliderElement);
})();
当我尝试使用
:-webkit滑块thumb
设置
样式时,我希望它能正常工作。如果我可以在style.css
中设置自定义元素的样式,那就太好了。使用阴影DOM时,样式会在“阴影边界”处停止。阴影根以外的样式不会应用于阴影根内的元素。(他以h3
元素为例,强调他的):
- 此页面上还有其他H3,但唯一与 h3选择器,因此样式为红色,是ShadowRoot中的选择器。 同样,默认情况下,使用范围样式
- 此页面上定义的其他样式规则,目标H3不会渗入我的内容。这是因为选择器不会跨越阴影边界
template.innerHTML
中包含的样式标记中定义自定义元素的样式。例如(我从中获得了滑块的样式):
template.innerHTML=`
输入[类型=范围]{
-webkit外观:无;
}
输入[类型=范围]:-webkit滑块可运行轨迹{
宽度:300px;
高度:5px;
背景:ddd;
边界:无;
边界半径:3px;
}
输入[类型=范围]:-webkit滑块拇指{
-webkit外观:无;
边界:无;
高度:16px;
宽度:16px;
边界半径:50%;
背景:一枝黄花;
利润上限:-4px;
}
`;
JSFiddle@Alex有帮助吗?
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="css/style.css">
<script src="js/slider.js" defer></script>
</head>
<body>
<slider-element></slider-element>
</body>
</html>
template.innerHTML = `
<style>
input[type=range]{
-webkit-appearance: none;
}
input[type=range]::-webkit-slider-runnable-track {
width: 300px;
height: 5px;
background: #ddd;
border: none;
border-radius: 3px;
}
input[type=range]::-webkit-slider-thumb {
-webkit-appearance: none;
border: none;
height: 16px;
width: 16px;
border-radius: 50%;
background: goldenrod;
margin-top: -4px;
}
</style>
<input type="range" min="-100" max="100" value="0">
`;