Lit-Element 웹 구성요소 내 스타일 재설정
그래서 당신은 당신의 웹 컴포넌트에 대해 작업하고 있고 머지 않아 그것들이 물건을 캡슐화하는 데 정말로 능숙하다는 것을 깨닫게 됩니다. 그것이 목표입니다. 이 웹 구성 요소를 확인하십시오.
2개
p개의 태그가 있습니다. 한편으로는 inner content가 포함된 Web Component 내부에 완전히 선언된 것이 있습니다....
render() {
return html`
<div>
<p>Inner content</p>
</div>
<div>
<slot></slot>
</div>
`
}
...
반면에 웹 구성 요소의
p 기능의 일부로 이동되는 본문의 일부로 선언된 slot 태그가 있습니다....
<div>
<my-element>
<p>Slotted content</p>
</my-element>
</div>
...
p 태그에 대해 선언된 재설정 규칙이 있습니다.p {
margin: 0;
}
보시다시피 외부에서 선언된
p 태그는 스타일을 적용하고 여백 없이 안으로 이동합니다. 그러나 내부에 선언된 p는 페이지 스타일로부터 "보호"되므로 사용자 에이전트 스타일이라는 일반적인 취급을 받습니다. 그것이 그들이 다르게 보이는 이유입니다.이 문제를 어떻게 해결합니까?
지금까지 이를 해결하는 방법은 단 한 가지뿐이라고 생각합니다. 웹 구성 요소 내에서도 재설정 스타일을 선언하는 것입니다. 웹 구성 요소에서
styles 정적 클래스 getter는 다음과 같습니다.static get styles() {
return css`
div {
border: 1px solid red;
}
p {
margin: 0;
}
`;
}
업데이트된 펜은 다음과 같습니다.
해결되었죠? 글쎄, 그것은 작동하지만 이것은 최적과는 거리가 멀다. 첫째, 웹 구성 요소 자체 외부에 이 재설정 스타일이 있어야 다른 구성 요소 간에 재설정 스타일을 공유할 수 있습니다. 이 같은:
...
const resetStyles = () => css`
p {
margin: 0;
}
`
...
static get styles() {
return [
resetStyles(),
css`
div {
border: 1px solid red;
}
`
]
}
...
그러나 두 번째이자 더 중요한 것은 소프트웨어 개발의 좋은 경험 법칙입니다. 동일한 내용을 반복하지 마십시오.
우리는 여전히 스타일 재설정 스타일시트를 가지고 있습니다.
reset.css 라고 부르겠습니다. 그리고 resetStyles() 에 의해 반환되는 재설정 스타일이 있는 객체가 있습니다. 즉, LitElement의 css 개체 및 독립 스타일시트로 재설정 스타일이 있습니다.멋진 점은 재설정 스타일 시트를 갖는 것입니다.
어떻게 하죠?
LitElement가 스타일시트를 이해하는 방식으로 스타일시트를 처리하고 CSS 객체를 생성할 수 있습니다. 이를 수행하는 방법에는 여러 가지가 있으며 롤업을 예로 들어 보겠습니다.
롤업하자! 다음과 같은 간단한 구성을 사용합니다.
import litcss from 'rollup-plugin-lit-css'
export default {
input: 'src/reset.css.js',
plugins: [
litcss({ uglify: true })
],
output: {
file: 'reset.css.lit.js',
format: 'es'
}
}
여기서 우리는 Rollup의 훌륭한
rollup-plugin-lit-css 플러그인을 사용하고 있습니다..ltag__user__id__74157 .follow-action-button {
배경색: #29292e !important;
색상: #a6e22e !중요;
border-color: #29292e !중요;
}
베니 파워스 🇮🇱🇨🇦
Coding is as much a matter of personal growth as it is of logic and control-flow. I keep patience, curiosity, & exuberance in the same toolbox as vim and git. *Opinions posted are my own*
우리
src/reset.css.js는 매우 간단합니다.export { default } from '../reset.css'
그게 다야!
이제 LitElement에서 사용할 수 있습니다.
...
import reset from "./reset.css.lit.js";
const resetStyles = () => reset
...
이를 위해서는 CodePen보다 더 발전된 것이 필요합니다. Glitch와 voilá를 사용합시다! 이제 재설정 스타일이 기록되는 위치는 한 곳뿐입니다(
reset.css ). 확인 해봐:이 예에서 파일reset.css.lit.js이 롤업에 의해 생성되었음을 기억하십시오.
Minireset.css
this PR에서 minireset.css를 개선하고 다른 사람들이 LitElement 웹 구성 요소에서 사용할 수 있는 추가 LitElement 호환 파일을 제공하는 데 사용한 방금 설명한 것과 유사한 접근 방식입니다. minireset.css는 프로덕션 사이트에서 사용할 수 있는 훌륭하고 아주 작은 재설정입니다. 제가 권장하는 내용입니다. 확인해보세요.
https://jgthms.com/minireset.css/
프로젝트에 설치:
npm install --save minireset.css
그런 다음 스타일을 재설정하려는 LitElement 웹 구성요소에서 스타일을 가져옵니다.
import { minireset } from 'minireset.css/minireset.css.lit.js'
그런 다음 다음과 같이 배열 CSS 결과의 일부로 사용합니다.
static get styles() {
return [
minireset,
... your other styles
]
}
또는 스타일에서 직접:
static get styles() {
return css`
${minireset}
... your other styles
`
}
그것은 포장입니다!
이 글이 도움이 되었기를 바랍니다. 질문과 피드백을 환영합니다 🙂
Reference
이 문제에 관하여(Lit-Element 웹 구성요소 내 스타일 재설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jdvivar/resetting-styles-inside-lit-element-web-components-17pp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)