CSS: Fixed with horizontal menu, with variable width tabs, using ul

前端 未结 5 542
春和景丽
春和景丽 2020-12-15 09:40

I have a horizontal menu. The markup looks like this:

  • Item 1
  • Longer Item 2
5条回答
  •  北荒
    北荒 (楼主)
    2020-12-15 10:43

    Here's my jquery solution:

    var actualWidth = 1000;
    var totalLIWidth = 0;
    
    // Calculate total width of list items
    var lis = $('ul li');
    
    lis.each(function(){
        totalLIWidth += $(this).width();
    });
    
    // Work out how much padding we need
    var requiredPadding = Math.round(((actualWidth-totalLIWidth)/lis.length)/2);
    
    // To account for rounding errors, the error is going to be forced into the first tab.
    var roundingErrorFix = (requiredPadding*lis.length*2)+totalLIWidth-actualWidth;
    
    // Apply padding to list items
    lis.each(function(i) {
        if(i==0) {
            $(this).css('padding-left',requiredPadding-roundingErrorFix+'px')
                .css('padding-right',requiredPadding-roundingErrorFix+'px');
        }
        else {
            $(this).css('padding-left',requiredPadding+'px')
                .css('padding-right',requiredPadding+'px');
        }
    });
    

提交回复
热议问题