2016-07-14 83 views
0

的Chrome 51結果Chrome和Firefox給於CSS變量的JavaScript文件導入不同的結果

Chrome 51 results

火狐導致

Firefox results

test.js

(function(){ 
    let template = ` 
    <style> 
     @import url("css/test.css"); 
     .test1{ 
      height: 100px; 
      width: 100px; 
      color: #fff; 
      background-color: var(--main-bg-color,red); 
     } 
    </style> 
    <div class="test1">test</div> 
    <div class="test2">test2</div> 
    `; 

    class TestWidget extends HTMLElement{ 
     createdCallback(){ 
      this.createShadowRoot().innerHTML = template; 
     }; 
    } 
    document.registerElement('test-widget',TestWidget); 
})(); 

測試.css

:root{ 
    --main-bg-color: blue; 
} 
.test2{ 
    background-color: green; 
    height: 100px; 
    width: 100px; 
    color: #fff; 
} 

的test.html

<test-widget></test-widget> 

爲什麼結果不是在兩個不同的瀏覽器一樣的嗎?

+2

你有什麼問題嗎? – currarpickt

回答

0

template變量不是<template>元素。

可以創建<template>元件,設置<template>元件template可變.innerHTML;進口<template>使用.importNode()元件.content,追加導入到.contentshadowRoot元件<test-widget>

另外,代替對於:host:root如果css預期結果是樣式被應用到shadowRoothost;包括關閉正斜槓/.test2元件<div class="test2">test2</div>,其中在js處丟失問題。雖然不完全確定實際問題是什麼?

(function(){ 
 
    let template = ` 
 
    <style> 
 
     /*@import url("css/test.css");*/ 
 
     :host { 
 
      --main-bg-color: blue; 
 
     } 
 
     .test2 { 
 
      background-color: green; 
 
      height: 100px; 
 
      width: 100px; 
 
      color: #fff; 
 
     } 
 
     .test { 
 
      height: 100px; 
 
      width: 100px; 
 
      color: #fff; 
 
      background-color: var(--main-bg-color,red); 
 
     } 
 
    </style> 
 
    <div class="test">test</div> 
 
    <div class="test1">test</div> 
 
    <div class="test2">test2</div> 
 
    `; 
 

 
    class TestWidget extends HTMLElement{ 
 
     createdCallback(){ 
 
     var shadow = this.createShadowRoot(); 
 
     var temp = document.createElement("template"); 
 
     temp.innerHTML = template; 
 
     var shadowContent = document.importNode(temp.content, true); 
 
     shadow.appendChild(shadowContent); 
 
      
 
     }; 
 
    } 
 
    document.registerElement("test-widget",TestWidget); 
 
})();
<test-widget></test-widget>

+0

我可以導入.test,如何導入--main-bg-color? – custonHee

+0

_「如何導入--main-bg-color?」_你是什麼意思? – guest271314

相關問題