Home > Web Front-end > HTML Tutorial > polymer如何实现样式的共享和隔离_html/css_WEB-ITnose

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

WBOY
Release: 2016-06-21 08:53:30
Original
1674 people have browsed it

不得不说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;  }
Copy after login

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;        }      }
Copy after login

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

<style include="shared-styles"></style>    <style>      :host {        display: block;        color: red;      }      input{        color: red;      }    </style>
Copy after login

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

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;}
Copy after login

在 index.html里面也有调用

<style is="custom-style" include="shared-styles"></style>
Copy after login

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

.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;}}
Copy after login

扩展阅读

  • Styling local DOM
  • CSS and Styling
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template