csswidthborderminimum-size

border-width in em - but set a minimum border-width


I want a div to have a border-width relative to the font-size, so I set for example border-width: 0.1em;. But if the font size is too small, no border appears as it is rendered smaller as 0.5px. This is of course not what I want. Is there any chance to set a minimum border-width of 1px?

div {
    border: 0.1em solid black;
}

Solution

  • In CSS3, you can try to (ab)use the max css function, if your browser supports it.

    border-width: max(1px, 0.1em);
    border-style: solid; 
    border-color: black;
    

    Unfortunately this awesome CSS3 feature isn't supported by any browsers yet, but I hope this will change soon!

    But in CSS2 – no, you can't.
    However, you can use JavaScript/jQuery to loop through all elements and increase the border size to 1px.

    But this will eat so much performance your browser is gonna crash if you have too many elements on your page (e.g. a table with more than 50-100 rows).
    So in other words, no it's not possible.

    $("[id$='ReportViewerControl']").find('*')
    
        .each(function () {
    
            if($(this).is('#ParametersRowReportViewerControl *')) 
                return;
    
            //console.log("Processing an element");
            //var cls = $(this).attr("class");
    
            // Don't add a border to sort-arrow
            if ($(this).is('img')) {
                return;
            }
    
            var anywidth = $(this).css('width');
            var anywidth = parseFloat(anywidth);
            //console.log("anywidth: " + anywidth);
    
    
            //var lol = $(this).css('borderLeftWidth');
            var blw = $(this).css('border-left-width');
            var brw = $(this).css('border-right-width');
            var btw = $(this).css('border-top-width');
            var bbw = $(this).css('border-bottom-width');
    
            var borls = $(this).css('border-left-style') == "solid";
            var borrs = $(this).css('border-right-style') == "solid";
            var borts = $(this).css('border-top-style') == "solid";
            var borbs = $(this).css('border-bottom-style') == "solid";
    
            var blw = parseFloat(blw);
            var brw = parseFloat(brw);
            var btw = parseFloat(btw);
            var bbw = parseFloat(bbw);
    
            //parseInt($(this).css("borderRightWidth"))
            //console.log(parseInt($(this).css("borderLeftWidth")));
    
            // UpdateLock = true;
    
    
            // Set width to 1px where 0px
            if (anywidth == 0)
                $(this).css('width', '1px');
    
            if (borls && blw == 0.0 || (blw > 0.0 && blw < 1.0)) {
                //console.log("setting border width");
                $(this).css('border-left-width', '1px');
            }
    
            if (borrs && brw == 0.0 || (brw > 0.0 && brw < 1.0)) {
                $(this).css('border-right-width', '1px');
            }
    
            if (borts && btw == 0.0 || (btw > 0.0 && btw < 1.0)) {
                $(this).css('border-top-width', '1px');
            }
    
            if (borbs && bbw == 0.0 || (bbw > 0.0 && bbw < 1.0)) {
                $(this).css('border-bottom-width', '1px');
            }
    
            // UpdateLock = false;
        });           // End $('*').each