优化 css 以减少代码
Optimize css to less code
我是 LESS 初学者。
我这里有一些 css 代码,我需要建议我可以优化什么或其他什么来减少 css 代码但更多 LESS 代码 ;-)
作为 LESS 初学者,我假设我必须寻找冗余属性及其值,并为它制定一个可重用的 LESS 定义,对吗?
那么我会开始:
border: solid 1px black; // used 2 times
border-bottom: black solid 1px;
// 使用了 1 次但部分使用了 2 次见上文
position:relative // used 2 times
padding:5px;
// 使用了 2 次,但一次是所有面,另一面仅 top/bottom
身高:100%; // 使用了 2 次
还有其他你想 LESsen 的东西吗?或者采取另一种方法?
#availableOptionSidebarContainer {
text-align: center;
display: table;
z-index: 100000;
border: solid 1px black;
}
#availableOptionsContainer {
position:absolute;
height: 100%;
width: 220px;
border: black solid 1px;
display: none; /* initially the flyout is hidden */
background-color: white;
}
#availableOptionsPager {
margin: 0 auto;
border-bottom: black solid 1px;
width: 100%;
height: 10%;
}
#availableOptionsContainerWrapper{
position:relative;
height:100%;
}
#availableOptionsGrid {
position: relative;
height: 90%;
}
.availableOptionsArrow {
cursor: pointer;
font-size: 80%;
display: table-cell;
vertical-align: middle;
}
.availableOptionsPagerArrow {
padding: 5px 0 5px 0;
}
#availableOptionSidebarContainerOpener {
padding: 5px;
}
(这应该是评论,但太长了):
其实这个问题太笼统了。因为它完全取决于 "what for?"。
没有理由仅仅为了删除重复项而删除重复项。在许多情况下,特定样式的可读性和实际语义比 "no repeats" 重要得多。在大多数情况下,这种 "optimization" 与 CSS/HTML 结构和 它们的 优化上下文不可分离。因此,当您看到 padding: 5px;
重复两次时,您需要回答太多问题 ,然后才能 做出有关它的事情(或任何事情)。为什么它毕竟是重复的?它真的与紧密耦合的 HTML 元素完全相同 属性 还是只是 "coincidence" 从你的尺寸是 5px
的倍数这一事实中提出来的?它们会保持不变还是在某个时候可能会更改为 padding: 10px;
?在许多情况下,重构的第一个候选者是这个基本单元,而不是属性本身。
例如,没有理由用 .padding(5px);
替换 padding: 5px;
,它根本不是 "optimization",而且完全没有用。它仅用 相同的 代码段替换了一段代码,只是格式不寻常(且可读性较差)。
如果你需要用一些"default" mixin 替换一个属性-value 语句,这也是一件相当复杂的事情;例如border: 1px solid black;
-> .border()
。这也取决于太多因素,例如对于上面的例子,我可能会使用类似的东西:
... { // assuming some namespace / group of selectors where "border" value is the same
@border: 1px solid black;
#availableOptionSidebarContainer {
border: @border;
}
#availableOptionsContainer {
border: @border;
}
#availableOptionsPager {
border-bottom: @border;
}
}
但确切的代码可能又会有所不同(为什么是 black
?为什么是 1px
?等等等等。根据它是某种主题还是 "just whatever simple border" 或介于两者之间)。但是这里也没有简单的规则(只是 "be reasonable",例如,当人们试图将 每个 单个值转换为一个专用变量时,这是很常见的情况,它只是一个噩梦的对面)
还有另一个(有点不相关的)提示。 在 进行任何优化之前,您确实需要对样式中的属性顺序进行排序(参见 for example)。现在它太混乱了 - 实际上对于 reader/maintainer 的代码来说,这可能比缺少或存在重复项重要得多。
我是 LESS 初学者。
我这里有一些 css 代码,我需要建议我可以优化什么或其他什么来减少 css 代码但更多 LESS 代码 ;-)
作为 LESS 初学者,我假设我必须寻找冗余属性及其值,并为它制定一个可重用的 LESS 定义,对吗?
那么我会开始:
border: solid 1px black; // used 2 times
border-bottom: black solid 1px;
// 使用了 1 次但部分使用了 2 次见上文
position:relative // used 2 times
padding:5px;
// 使用了 2 次,但一次是所有面,另一面仅 top/bottom
身高:100%; // 使用了 2 次
还有其他你想 LESsen 的东西吗?或者采取另一种方法?
#availableOptionSidebarContainer {
text-align: center;
display: table;
z-index: 100000;
border: solid 1px black;
}
#availableOptionsContainer {
position:absolute;
height: 100%;
width: 220px;
border: black solid 1px;
display: none; /* initially the flyout is hidden */
background-color: white;
}
#availableOptionsPager {
margin: 0 auto;
border-bottom: black solid 1px;
width: 100%;
height: 10%;
}
#availableOptionsContainerWrapper{
position:relative;
height:100%;
}
#availableOptionsGrid {
position: relative;
height: 90%;
}
.availableOptionsArrow {
cursor: pointer;
font-size: 80%;
display: table-cell;
vertical-align: middle;
}
.availableOptionsPagerArrow {
padding: 5px 0 5px 0;
}
#availableOptionSidebarContainerOpener {
padding: 5px;
}
(这应该是评论,但太长了):
其实这个问题太笼统了。因为它完全取决于 "what for?"。
没有理由仅仅为了删除重复项而删除重复项。在许多情况下,特定样式的可读性和实际语义比 "no repeats" 重要得多。在大多数情况下,这种 "optimization" 与 CSS/HTML 结构和 它们的 优化上下文不可分离。因此,当您看到 padding: 5px;
重复两次时,您需要回答太多问题 ,然后才能 做出有关它的事情(或任何事情)。为什么它毕竟是重复的?它真的与紧密耦合的 HTML 元素完全相同 属性 还是只是 "coincidence" 从你的尺寸是 5px
的倍数这一事实中提出来的?它们会保持不变还是在某个时候可能会更改为 padding: 10px;
?在许多情况下,重构的第一个候选者是这个基本单元,而不是属性本身。
例如,没有理由用 .padding(5px);
替换 padding: 5px;
,它根本不是 "optimization",而且完全没有用。它仅用 相同的 代码段替换了一段代码,只是格式不寻常(且可读性较差)。
如果你需要用一些"default" mixin 替换一个属性-value 语句,这也是一件相当复杂的事情;例如border: 1px solid black;
-> .border()
。这也取决于太多因素,例如对于上面的例子,我可能会使用类似的东西:
... { // assuming some namespace / group of selectors where "border" value is the same
@border: 1px solid black;
#availableOptionSidebarContainer {
border: @border;
}
#availableOptionsContainer {
border: @border;
}
#availableOptionsPager {
border-bottom: @border;
}
}
但确切的代码可能又会有所不同(为什么是 black
?为什么是 1px
?等等等等。根据它是某种主题还是 "just whatever simple border" 或介于两者之间)。但是这里也没有简单的规则(只是 "be reasonable",例如,当人们试图将 每个 单个值转换为一个专用变量时,这是很常见的情况,它只是一个噩梦的对面)
还有另一个(有点不相关的)提示。 在 进行任何优化之前,您确实需要对样式中的属性顺序进行排序(参见 for example)。现在它太混乱了 - 实际上对于 reader/maintainer 的代码来说,这可能比缺少或存在重复项重要得多。