2017-02-05 60 views
2

我正在制作电子邮件通讯。包含30列,所有具有第以下类:继承和css中的个人风格

.content-text { 
    padding: 10px 10px 10px 10px !important; 
    font-size: 16px; 
    line-height: 1.3; 

    } 

每列需要具有上述类,但是每列需要有不同的背景颜色。例如:

.column--left__content { 
    background-color: #bebab1; 
    } 

所以这就是说,列 - left__content应该继承content-text的所有内容。我怎样才能做到最好的方式?

HTML

<table class="row"> 
    <tbody> 
    <tr> 
     <th class="small-12 large-1 columns first first--column__color " style="width:1%;"> 
     <table> 
      <tr> 
      <th> 
       <p></p> 
      </th> 
      </tr> 
     </table> 
     </th> 
     <!-- Here is how I solved this until now --> 
     <th class="small-12 large-5 columns first content-text column--left__content"> 
     <table > 
      <tr> 
      <th> 
       <h5><strong>This is headline 1</strong></h5> 
       <p class="text-left">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> 
      </th> 
      </tr> 
     </table> 
     </th> 
    </tr> 
    </tbody> 
</table> 

此刻我打电话在SAM <th>,这看起来并不那么好看的content-textcolumn--left__content

这样做的最佳做法,那会是什么?我在想,fx column--left__content必须继承.content-text,但具有单独的样式吗?

编辑

回答

1

一种可能的方法是在CSS中使用nth-child选择器。

.wrapper { 
 
color:#fff; 
 
background-color:none; 
 
width:50%; 
 
height:3rem; 
 
line-height:3rem; 
 
font-size:1.5rem; 
 
} 
 
.wrapper p { 
 
padding:0 0 0 1rem; 
 
} 
 
.wrapper p:nth-child(1) { 
 
background: red; 
 
} 
 
.wrapper p:nth-child(2) { 
 
background: green; 
 
} 
 
.wrapper p:nth-child(3) { 
 
background: brown; 
 
}
<div class="wrapper"> 
 
    <p> col 1</p> 
 
    <p> col 2</p> 
 
    <p> col 3</p> 
 
</div>

另一种可能的方式是为了用它来创建自己的background-color辅助类,只要你想,而不是只用于此情况。

.wrapper { 
 
color:#fff; 
 
background-color:none; 
 
width:50%; 
 
height:3rem; 
 
line-height:3rem; 
 
font-size:1.5rem; 
 
} 
 
.wrapper p { 
 
padding:0 0 0 1rem; 
 
} 
 
.bg_red { 
 
background: red; 
 
} 
 
.bg_green { 
 
background: green; 
 
} 
 
.bg_brown { 
 
background: brown; 
 
}
<div class="wrapper"> 
 
    <p class="bg_red"> col 1</p> 
 
    <p class="bg_green"> col 2</p> 
 
    <p class="bg_brown"> col 3</p> 
 
</div>

有是有一个小的jQuery插件,我已经做一次第3方式(我还没有更新,它虽然:)因为没有实际使用)。但是这个概念是在你的语法中使用简单的助手类来实现文本颜色和背景颜色。其余的由插件完成。只需添加到HTML中的类(不需要CSS)就有前缀(bgDarken-,bgLighten-,txtDarken-,txtLighten-),后面跟着1到256之间的数字。检查结果片段。 你可以找到它here,有两个例子使用Bootstrap(和张贴在这里的片段),和一个使用Materialize框架。

<!doctype html> 
 

 
<html lang="en"> 
 
<head> 
 
    <meta charset="utf-8"> 
 

 
    <title>jLightenDarken Demo with Bootstrap Framework integration.</title> 
 
    <meta name="description" content="The HTML5 Herald"> 
 
    <meta name="author" content="SitePoint"> 
 
    <!-- Latest compiled and minified CSS --> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> 
 
    <!--[if lt IE 9]> 
 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
 
    <![endif]--> 
 
    <style type="text/css"> 
 
body { 
 
    color:#fff; 
 
    background-color:#ffffff; 
 
} 
 
div.alert, div.panel { 
 
background-color:#2196f3; 
 
    color:#ffffff; 
 
} 
 
</style> 
 
</head> 
 

 
<body> 
 
<div class="container-fluid"> 
 
<div class="row"> 
 
    <div class="col-xs-8 col-xs-offset-2 col-sm-8 col-sm-offset-2 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2"> 
 
    <div class="panel panel-default bgDarken-4"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-4 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
    <div class="panel panel-default bgDarken-8"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-8 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-16"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-16 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-24"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-16 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-40"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
    <div class="panel panel-default bgDarken-48"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-64"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-80"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-16 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
    <div class="panel panel-default bgDarken-96"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
    <div class="panel panel-default bgDarken-124"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-140"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-148"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-156"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
    <div class="panel panel-default bgDarken-164"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-192"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-24 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-224"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-16 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
\t  <div class="panel panel-default bgDarken-255"> 
 
\t \t <div class="panel-body"> 
 
\t \t \t Lorem ipsum 
 
\t \t </div> 
 
\t \t <div class="panel-footer bgLighten-16 txtDarken-255"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...</div> 
 
\t </div> 
 
    </div> 
 

 
</div> 
 
<br /> 
 
<div class="row"> 
 
    <div class="col-xs-8 col-xs-offset-2 col-sm-8 col-sm-offset-2 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2"> 
 
<div class="alert alert-info bgLighten-16">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-24">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-32">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-40">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-48">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-56">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-64">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-80">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-96">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-124 txtDarken-124">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-156 txtDarken-156">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-164 txtDarken-164">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-180 txtDarken-180">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-192 txtDarken-196">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-216 txtDarken-224">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-232 txtDarken-248">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
<div class="alert alert-info bgLighten-256 txtDarken-256">   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur lectus neque, pretium eget elit sit amet, maximus pretium libero...      </div> 
 
    </div> 
 
    </div> 
 
    </div> 
 
<!-- Latest compiled and minified JavaScript --> 
 
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> 
 
<script type="text/javascript">!function(n){function t(n){return null==n||""==n||"rgba(0, 0, 0, 0)"===n||"transparent"===n}function o(n){var i=n.parent(),r=n.css("background-color");return t(r)&&(r=i&&null!=i?o(i):""),r}function r(n){var i=n.parent(),o=n.css("color");return t(o)&&(o=i&&null!=i?r(i):""),o}function s(n){var t=n.split("-"),i=[];return 2==t.length?(i.functionality=t[0],i.amount=parseInt(t[1]),i):void 0}function l(t){var o,l,a,e,h=[],c=[],u=[];for(e=0,j=0;j<t.length;j++){"txtLighten"==t&&(e=1),"txtDarken"==t&&(e=-1),o=n('div[class*="'+t+'"]');var g,f=0,p=[];for(n.each(o,function(){for($klassKolor=r(n(this)),p.push($klassKolor.match(/\d+/g)),h.push($klassKolor),l=n(this).prop("class").split(" "),k=0;k<l.length;k++)-1!=l[k].search(t)&&(a=s(l[k]),c.push(a.amount))}),f=0;f<p.length;f++){for(g=p[f],i=0;i<g.length;i++)g[i]=parseInt(g[i])+c[f]*e,g[i]>=255&&(g[i]=255),g[i]<=0&&(g[i]=0),g[i]=g[i].toString(16),g[i].length<2&&(g[i]="0"+g[i]);u.push("#"+g.join(""))}}n.each(o,function(t){n(this).css("color",u[t])})}function a(t){var r,l,a,e,h=[],c=[],u=[];for(e=0,j=0;j<t.length;j++){"bgLighten"==t&&(e=1),"bgDarken"==t&&(e=-1),r=n('div[class*="'+t+'"]');var g,f=0,p=[];for(n.each(r,function(){for($klassKolor=o(n(this)),p.push($klassKolor.match(/\d+/g)),h.push($klassKolor),l=n(this).prop("class").split(" "),k=0;k<l.length;k++)-1!=l[k].search(t)&&(a=s(l[k]),c.push(a.amount))}),f=0;f<p.length;f++){for(g=p[f],i=0;i<g.length;i++)g[i]=parseInt(g[i])+c[f]*e,g[i]>=255&&(g[i]=255),g[i]<=0&&(g[i]=0),g[i]=g[i].toString(16),g[i].length<2&&(g[i]="0"+g[i]);u.push("#"+g.join(""))}}n.each(r,function(t){n(this).css("background-color",u[t])})}n.fn.jLightenDarken=function(){l("txtLighten"),l("txtDarken"),a("bgLighten"),a("bgDarken")}}(jQuery); 
 
</script> 
 
<script type="text/javascript"> 
 
$(document).ready(function() { 
 
$('body').jLightenDarken(); 
 
}); 
 
</script> 
 
</body> 
 
</html>

总结,这取决于你真正想要的每一个或其他呈现,使用户可以为YOU最好的(或没有)解决方案,任何其他的答案。

0

假设你的HTML是如下:

<section class="wrapper"> 
    <div class="col1"> col 1</div> 
    <div class="col2"> col 2</div> 
    <div class="col3"> col 3</div> 
</section> 

你的CSS可能是这样的:

.wrapper > div { 
    padding: 10px 10px 10px 10px !important; 
    font-size: 16px; 
    line-height: 1.3; 
} 

,并为每个颜色等级:

.col1 { 
    background-color: red; 
} 

.col2 { 
    background-color: green; 
} 

我希望它能帮助

+0

非常感谢您的回答。我刚刚更新了我的问题。如果你有时间,我希望你看看它。你是否仍然认为你的解决方案是最好的方法? – Mimi

+0

该原则仍然适用,你可以为你的泛型风格有一个泛型类(这意味着有30个类正在做同样的事情,我个人更喜欢我的解决方案在“.wrapper> div”之上),并且对每种颜色都有一个特定的类...回答你的问题..是 – Alex

0

一个不错的选择也会被使用CSS少。您可以使用CSS更少的@extend概念。

.contest-test { 
    .context-text(); /* Copies everything from .context-text down here */ 
    border: 1px solid red; 
} 

关注这个Link这里

+0

谢谢你的回答。不幸的是我必须使用CSS。 – Mimi

0

首先:如果元素的每一个迭代有相同类,你正在做的事情是错误的。第二:通过不分配类,但将基本CSS赋予元素本身,可以轻松解决您的问题。

例如是这样的:

th { 
padding: 10px 10px 10px 10px !important; 
font-size: 16px; 
line-height: 1.3; 
} 

然后你只需要添加背景色类,你需要他们。