Macji Pro2010

记录一些应该记录的东东

跨浏览器实现float:center,No CSS hacks

July 29, 2008 - by Macji - HTML/CSS/JS/PHP - css, float

我们都知道float:left和float:right,但是否想过float:center呢?居中浮动。。。

<div id="macji">
    <ul class="macji-skin">
        <li>列表一</li>
        <li>列表二</li>

        <li>列表三</li>
    </ul>
</div>

我们希望实现li是浮动的,并且居中的(li个数不固定,ul宽度未知)。可以设置ul的text-align:center,再设置li的display,可以实现居中,但这样不是我们的初衷,我们需要实现float:center。


这里我们得先重温一下position:relative,它将依据left,right,top,bottom等属性在正常文档流中偏移位置。那我们可以让ul为position:relative;left:50%,然后再让li像左浮动,在让它position:relative;right:50%(或者left:-50%),那么li就像向中间浮动一样居中了。废话不多说,先试试。

#macji{
    position:relative;
    width:100%;
    height:80px;
    background-color:#eee;
    text-align:center;
    overflow:hidden;
}
#macji .macji-skin{
    float:left;
    position:relative;
    left:50%;
}
#macji .macji-skin li{
    position:relative;
    right:50%;
    float:left;
    margin:10px;
    padding:0 10px;
    border:solid 1px #000;
    line-height:60px;
}

猛击这里,查看演示»

扩展阅读

3 条评论»

语义元素和非语义元素

July 13, 2008 - by Macji - HTML/CSS/JS/PHP - html, semantics

在我上一篇文章,我指出“所有语义的元素都不应作为布局来使用”,引来很多反对声音。这里我想解释一下我认为的语义和非语义元素(只是个人观点哦)。


非语义元素,布局元素


我认为的作为布局只有div,span,因为他们只有属性display。一个表示块(断行的),一个表示内联的(不断行的),并无其他实际意义。所以他们只能用来布局,我们可以理解为水泥板和砖头。

The DIV and SPAN elements, in conjunction with the id and class attributes, offer a generic mechanism for adding structure to documents. These elements define content to be inline (SPAN) or block-level (DIV) but impose no other presentational idioms on the content. Thus, authors may use these elements in conjunction with style sheets, the lang attribute, etc., to tailor HTML to their own needs and tastes.

语义元素,非布局元素

以上是常见的一些元素(当然还有很多元素,这里就不一一列出了),我们拿出来比较就会发现,语义元素和非语义元素的差别。最后我还是想强调,所有语义的元素都不应作为布局来使用。(如果你不同意我的观点,你当然坚持自己的,挖哈哈~~)。

1 条评论»

结构还是内容

July 7, 2008 - by Macji - HTML/CSS/JS/PHP - html

迷惑,是否应该把结构和内容分清楚?这在于多余标签和精炼标签。光光字面意思,多余和精炼。你会选谁呢。但我不觉得多余代码有什么不好。我们常见到多余代码,例如:

<div class=“list”>
    <ul>
        <li>清单一</li>
        <li>清单一</li>

        <li>清单一</li>
    </ul>
</div>

<div class="footer">
    <p>这里是我的版权,一个开始走火的人的版权</p>

</div>

大家都会说外层的div可以省略,然后把它的class给子容器(ul,p)。我并不这么认为,外层的div是结构,而ul或者p是呈现语义,也就是展现一个列表或者一个段落,列表或者段落总不能用来布局吧?这好比一间房子,我们把结构去掉,直接用墙纸,窗帘来做结构,那这房子还有谁敢住哦。


以后有一些小需求,比如list那里增加一个“更多”链接,按照“精炼”就要改动结构或者就增加一个li放“更多”,但这样合适么。。。


我们的页面不仅仅要用户看上去内容清晰,我们内在的结构也要清晰。所以我更倾向把结构分清楚,然后再填写内容。

1 条评论»