您需要重置組件中受客戶端CSS影響的任何CSS樣式。一種方法是使用CSS all
property。
CSS所有速記屬性將除unicode-bidi和direction之外的所有屬性重置爲其初始值或繼承值。
此解決方案的問題是all
在IE或Edge中不受支持。
var style = {
navigation: {
all: 'initial',
minWidth: '50px ',
position: 'relative ',
marginBottom: '20px ',
border: '1px solid transparent '
},
};
render function() {
return(<nav style={style.navigation}> ...... </nav>);
}
以下是這個動作的例子 - 利用CSS all: initial
屬性,其他沒有示出同一<Nav />
組分,一種。如前所述,這不適用於Internet Explorer或Edge。
class Nav extends React.Component {
render() {
var style = {
navigationWithAll: {
all: 'initial',
border: '1px solid red'
},
navigation: {
minWidth: '50px ',
position: 'relative ',
marginBottom: '20px ',
border: '1px solid red'
}
};
return (
<div>
<nav style={style.navigation}>Navigation</nav>
<nav style={style.navigationWithAll}>Navigation</nav>
</div>
)
}
}
ReactDOM.render(
<Nav />,
document.getElementById('app')
);
nav {
height: 100px;
background-color: gray;
font-family: "Comic Sans MS";
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
如果需要支持IE或邊緣,這可能是這種情況,你將需要重置這些被繼承的特定CSS屬性。
styles = {
navigation: {
height: 'initial'
}
}
,但一個更強大的解決方案,這將在所有客戶網站工作將導入CSS部件復位:這個就可以像下面這樣簡單的事情要做。
reset = {
margin: 'initial',
padding: 'initial',
height : 'auto',
height: 'initial',
width: 'auto',
// any other properties you want to reset, or a full list of CSS properties to reset to initial/auto
}
}
然後導入該復位到組件樣式
import reset from 'reset'
styles = {
navigation: {
...reset,
border: 1px solid red,
// your custom styles
}
}
它會佔用的CSS明顯。你可以做的是重寫它們或刪除那些不想要的風格 – Piyush
嘿piyush。謝謝回覆。但它來自客戶端的CSS頁面。所以重置是唯一的方法來做到這一點。 ? –
不重置實際上只是重寫它們。這是你的方式,你也可以提供classNames以及不同的標籤 – Piyush