How to make CSS width to fill parent?

前端 未结 5 393
天命终不由人
天命终不由人 2020-12-13 11:32

I am sure this problem has been asked before but I cannot seem to find the answer.

I have the following markup:

5条回答
  •  醉梦人生
    2020-12-13 12:37

    EDIT:

    Those three different elements all have different rendering rules.

    So for:

    table#bar you need to set the width to 100% otherwise it will be only be as wide as it determines it needs to be. However, if the table rows total width is greater than the width of bar it will expand to its needed width. IF i recall you can counteract this by setting display: block !important; though its been awhile since ive had to fix that. (im sure someone will correct me if im wrong).

    textarea#bar i beleive is a block level element so it will follow the rules the same as the div. The only caveat here is that textarea take an attributes of cols and rows which are measured in character columns. If this is specified on the element it will override the width specified by the css.

    input#bar is an inline element, so by default you cant assign it width. However the similar to textarea's cols attribute, it has a size attribute on the element that can determine width. That said, you can always specifiy a width by using display: block; in your css for it. Then it will follow the same rendering rules as the div.

    td#foo will be rendered as a table-cell which has some craziness to it. Bottom line here is that for your purposes its going to act just like div#foo as far as restricting the width of its contents. The only issue here is going to be potential unwrappable text in the column somewhere which would make it ignore your width setting. Also all cells in the column are going to get the width of the widest cell.


    Thats the default behavior of block level element - ie. if width is auto (the default) then it will be 100% of the inner width of the containing element. so in essence:

    #foo {width: 800px;}
    #bar {padding-left: 2px; padding-right: 2px; margin-left: 2px; margin-right: 2px;}
    

    will give you exactly what you want.

提交回复
热议问题