我最大的CSS问题之一就是如何恰当地定位东西是多么棘手。
现在我觉得有多难以理解事情,我总是需要几次尝试才能猜出哪些必须浮动哪个方向与什么相关。
现在,我的麻烦是,我通常在某些时候会有这样的代码:
<div class="someContainerThatWillWorkAsALine">
<div class="someOtherContainerThatWillWorkAsAcolumn">
<div class="StuffInAcolumn">
...
</div>
这样的课程的唯一目的是:
我有时会想知道我是在编写软件,还是试图找到合适的方法将天线转为接收旧式模拟电视。
“好的,向右走一点,请...... 不,还没到那里。 现在完美,不要动!“
此外,这些类没有真正的语义,因此非常很难给它们一个有意义的名称。这使得CSS非常难以阅读,更糟糕的是,很难写,因为每当我必须选择一个名称“而另一类 - 那么简单 - 我就会发生惊恐发作告诉-A-块到行为作为一种线”。因为每个类名都是web2.0-y-one-page-site的全局,所以您不希望与使用过的名称冲突。
那么你如何解决这类问题呢? 你:
欢迎任何想法。
答案 0 :(得分:4)
我理解你的痛苦,但你越习惯使用CSS / html就越容易。为了你最终喜欢它。
是否值得将“样式”与CSS中的“布局”分开
是的,绝对!如果你使用布局框架,你将没有所有那些疯狂的类。然后你可以专注于风格。布局和样式都将在CSS文件中。
从不内联样式 - 维护有用的separation of concerns。
This article解决了为什么关注点分离会使您的网站长期受益。
答案 1 :(得分:4)
我采取的方法是将我的CSS规则分成三个不同的“部分”:
以下是当前项目的一个示例:
.OrderActionsPane {
/* --- Layout --- */
height: 45px;
padding: 3px;
border-bottom-width: 1px;
/* --- Typography --- */
font-size: 14px;
font-weight: bold;
/* --- Appearance --- */
background: #fff;
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fff), color-stop(100%, #ededed));
background: -webkit-linear-gradient(top center, #fff, #ededed);
background: -moz-linear-gradient(top center, #fff), #ededed);
background: -o-linear-gradient(top center, #fff, #ededed);
background: linear-gradient(top center, #fff, #ededed);
box-shadow: 0 0 5px rgba(0,0,0,.25);
-webkit-box-shadow: 0 0 5px rgba(0,0,0,.25);
-moz-box-shadow: 0 0 5px rgba(0,0,0,.25);
-ms-box-shadow: 0 0 5px rgba(0,0,0,.25);
-o-box-shadow: 0 0 5px rgba(0,0,0,.25);
border-bottom-style: solid;
border-bottom-color: #e6e6e6;
}
我这样做的原因是布局规则(大多数是盒子模型)对布局影响最大。类型规则也会影响您的布局(例如,如果您有一个流体容器并增加字体大小,则容器可能会增长)。外观样式对您的布局没有影响。
请注意,我正在分离边界规则。写“border-bottom:1px solid#e6e6e6”作为速记更容易,但是你会失去边框的外观和布局效果之间的分离。
其他注意事项也可能是您在布局中使用的单位。 Px将使布局更加稳固,但如果您使用百分比或ems来实现更适合移动设备或可扩展的布局,则可能需要更多思考。
我的方式不一定是唯一的或最好的,解决方案可能会因平台的限制而有所不同(是否允许您将此类规则分成“Layout.css”文件和“主题”例如,.css“文件,主题文件只改变了外观,可以换成另一个用于完全不同的外观。”
我认为这是每个前端开发/ CSS编码人(或女孩)在某些时候碰到的东西!随着您对CSS的了解越来越多,您将开始思考“必须有更好的方法来实现这一目标”。最后,如果你努力,你会找到一个解决方案。 :)
看一看SMACSS的更多思考:http://smacss.com/book/type-layout
答案 2 :(得分:0)
使用多个类名 - 一组用于定位,一组用于样式。不要使用内联样式。
约定取决于你。