Override and reset CSS style: auto or none don't work

后端 未结 7 1174
灰色年华
灰色年华 2021-01-30 04:50

I would like to override following CSS styling defined for all tables:

table {
        font-size: 12px;
        width: 100%;
        min-width: 400px;
               


        
相关标签:
7条回答
  • 2021-01-30 05:17
    Set min-width: inherit /* Reset the min-width */
    

    Try this. It will work.

    0 讨论(0)
  • 2021-01-30 05:17

    Well, display: none; will not display the table at all, try display: inline-block; with the width and min-width declarations remaining 'auto'.

    0 讨论(0)
  • 2021-01-30 05:19

    I believe the reason why the first set of properties will not work is because there is no auto value for display, so that property should be ignored. In that case, inline-table will still take effect, and as width do not apply to inline elements, that set of properties will not do anything.

    The second set of properties will simply hide the table, as that's what display: none is for.

    Try resetting it to table instead:

    table.other {
        width: auto;
        min-width: 0;
        display: table;
    }
    

    Edit: min-width defaults to 0, not auto

    0 讨论(0)
  • 2021-01-30 05:22

    I ended up using Javascript to perfect everything.

    My JS fiddle: https://jsfiddle.net/QEpJH/612/

    HTML:

    <div class="container">
        <img src="http://placekitten.com/240/300">
    </div>
    
    <h3 style="clear: both;">Full Size Image - For Reference</h3>
    <img src="http://placekitten.com/240/300">
    

    CSS:

    .container {
        background-color:#000;
        width:100px;
        height:200px;
    
        display:flex;
        justify-content:center;
        align-items:center;
        overflow:hidden;
    
    }
    

    JS:

    $(".container").each(function(){
        var divH = $(this).height()
        var divW = $(this).width()
        var imgH = $(this).children("img").height();
        var imgW = $(this).children("img").width();
    
        if ( (imgW/imgH) < (divW/divH)) { 
            $(this).addClass("1");
            var newW = $(this).width();
            var newH = (newW/imgW) * imgH;
            $(this).children("img").width(newW); 
            $(this).children("img").height(newH); 
        } else {
            $(this).addClass("2");
            var newH = $(this).height();
            var newW = (newH/imgH) * imgW;
            $(this).children("img").width(newW); 
            $(this).children("img").height(newH); 
        }
    })
    
    0 讨论(0)
  • 2021-01-30 05:25

    "none" does not do what you assume it does. In order to "clear" a CSS property, you must set it back to its default, which is defined by the CSS standard. Thus you should look up the defaults in your favorite reference.

    table.other {
        width: auto;
        min-width: 0;
        display:table;
    }
    
    0 讨论(0)
  • 2021-01-30 05:30

    The default display property for a table is display:table;. The only other useful value is inline-table. All other display values are invalid for table elements.

    There isn't an auto option to reset it to default, although if you're working in Javascript, you can set it to an empty string, which will do the trick.

    width:auto; is valid, but isn't the default. The default width for a table is 100%, whereas width:auto; will make the element only take up as much width as it needs to.

    min-width:auto; isn't allowed. If you set min-width, it must have a value, but setting it to zero is probably as good as resetting it to default.

    0 讨论(0)
提交回复
热议问题