> 웹 프론트엔드 > HTML 튜토리얼 > polymer如何实现样式的共享和隔离_html/css_WEB-ITnose

polymer如何实现样式的共享和隔离_html/css_WEB-ITnose

WBOY
풀어 주다: 2016-06-21 08:53:30
원래의
1675명이 탐색했습니다.

不得不说polymer非常的前卫,web component,ES2015,css4全部都用上了。web component主要是隔离作用,那他是如何实现样式的共享呢。

polymer-starter-kit是一个初始化的例子,预览点 这里。

这个例子设计的很巧妙,在 app/styles/app-theme.html里面定义了各种css变量,可以方便的更改主题的配色,变量用 --定义,属性用 var()调用,选择器用 @apply()调用,相当于sass的 @mixin。

:root {    --dark-primary-color: #303F9F;    --default-primary-color: #3F51B5;    --light-primary-color: #C5CAE9;    --text-primary-color: #ffffff; /*text/icons*/    --accent-color: #FF4081;    --primary-background-color: #c5cae9;    --primary-text-color: #212121;    --secondary-text-color: #727272;    --disabled-text-color: #bdbdbd;    --divider-color: #B6B6B6;  }  paper-menu a {    @apply(--layout-horizontal);    @apply(--layout-center);    text-decoration: none;    color: var(--menu-link-color);    font-family: 'Roboto', 'Noto', sans-serif;    -webkit-font-smoothing: antialiased;    text-rendering: optimizeLegibility;    font-size: 14px;    font-weight: 400;    line-height: 24px;    min-height: 48px;    padding: 0 16px;  }
로그인 후 복사

shared-styles.html里面是共享的样式

.page-title {        @apply(--paper-font-display2);      }      paper-menu a > *, paper-menu paper-item > *, paper-menu paper-icon-item > * {        pointer-events: none;      }      @media (max-width: 600px) {        .page-title {          font-size: 24px!important;        }      }
로그인 후 복사

在 my-greeting.html文件里是这么调用的

<style include="shared-styles"></style>    <style>      :host {        display: block;        color: red;      }      input{        color: red;      }    </style>
로그인 후 복사

然后在浏览器生成了下面的样式,自动加了命名空间,很赞。

paper-menu.my-greeting a.my-greeting > *.my-greeting, paper-menu.my-greeting paper-item.my-greeting > *.my-greeting, paper-menu.my-greeting paper-icon-item.my-greeting > *.my-greeting {  pointer-events: none;}@media (max-width: 600px) {.page-title.my-greeting {  font-size: 24px!important;}}my-greeting {  display: block;        color: red;}input.my-greeting {  color: red;}
로그인 후 복사

在 index.html里面也有调用

<style is="custom-style" include="shared-styles"></style>
로그인 후 복사

然后生成的是不同的命名空间,所以页面级调用和模块级调用是不同的,相互不会影响。

.page-title:not([style-scope]):not(.style-scope) {  font-family:'Roboto', 'Noto', sans-serif;      -webkit-font-smoothing:antialiased;      font-size:45px;      font-weight:400;      letter-spacing:-.018em;      line-height:48px}paper-menu a > *:not([style-scope]):not(.style-scope),paper-menu paper-item > *:not([style-scope]):not(.style-scope),paper-menu paper-icon-item > *:not([style-scope]):not(.style-scope) {  pointer-events: none;}@media (max-width: 600px) {.page-title:not([style-scope]):not(.style-scope) {  font-size: 24px!important;}}
로그인 후 복사

扩展阅读

  • Styling local DOM
  • CSS and Styling
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿