昨天我们利用 shadow-dom
将元件内外的样式区隔开来
不过 , 目前的 neuomorphic-button
有个奇怪之处
我们没有办法直接指定按钮要用哪一个 icon , 只能用 document.querySelector
var myTagName = 'neuomorphic-button';
document.querySelector(`${myTagName} .icon-box i`).className = 'fas fa-lightbulb'
使用 JS 事後对 dom 做修改 , 对於健忘的人 (比如说我) 就很容易忘记加上 JS 修改的那段 , 或是忘记自己有设定过替换的 JS
然後 , 在不同的 JS 档案中做修改 , Dedug 时就会很头痛 (所以这 icon 最後会变成啥样啊 !?)
今天 , 我们先来接收外部传入的参数 , 将 icon 相关的设定 , 统一放在 neuomorphic-button
元件上 ( ̄︶ ̄*))
neuomorphic-button
元件上 , 更改小图示 Step 1. 在 <neuomorphic-button />
上加上属性 icon
<!-- 将我们要显示的图标放的 icon 属性的文字当中 -->
<neuomorphic-button icon="fas fa-lightbulb" />
Step 2. 在元件上的 icon
接收下来 , 并将其写到 i 的 class 上面
利用 this.getAttribute('icon')
取得元件上的 icon
属性
// neuomorphic-button.js
class NeuomorphicButton extends HTMLElement {
constructor() {
super();
const iconName = this.getAttribute('icon')
...照旧处理
}
}
window.customElements.define('neuomorphic-button', NeuomorphicButton);
Step 3. 并接收到的 iconName 写到 i 的 class 上面
// neuomorphic-button.js
class NeuomorphicButton extends HTMLElement {
constructor() {
super();
const fontAwesomeStyle = `<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css">`
const styleStr = 'neuomorphic-button 的样式';
// 取得原件上的 icon 属性
+ const iconName = this.getAttribute('icon')
const div = document.createElement('div')
div.classList.add('icon-box')
// 将取到的 iconName 设定给 i
+ div.innerHTML = `<i class="${iconName}"></i>`
const label = document.createElement('label')
label.innerHTML = `<input type="checkbox">`
label.append(div)
const shadowRoot = this.attachShadow({mode: 'open'})
shadowRoot.innerHTML = fontAwesomeStyle + styleStr
shadowRoot.append(label)
}
}
window.customElements.define('neuomorphic-button', NeuomorphicButton);
之後我们就可以到 font-awesome
官网查出我们想要的小图示 , 并修改 icon
属性
我们可以利用以上手法 , 将
这些常见的按钮控制项 , 给设定出来 , 这些设定就留给 邦友
自行实作了 !
>>: [30天 Vue学好学满 DAY9] v-if & v-show
经过 29 天的探讨,已经慢慢建立概念了无论是关键字或是广告的文案,基本上无论 Google Ads...
近期说到基金理财,每次关於基金的消息上热搜,大多是基民都会心里一颤,觉得肯定基金又双叒叕跌了。确实,...
今天要来写controller的部分, (1)controller新称showOneMinKbar方...
tags: 铁人赛 AWS Outposts EKS Kubernetes 前情提要 昨天把 EKS...
iT邦帮忙一直以来都是我查询技术问题的好夥伴;而铁人赛为IT界名闻遐迩的年度盛事。 在友人极力鼓吹报...