How to create dynamic diagonal line from left-bottom to right-top corner?

前端 未结 3 834
别那么骄傲
别那么骄傲 2021-02-04 16:17

I\'ve created a simple layout where I have three divs which interact. One is the logo in the middle of the screen and the other are two blocks which with jQuery are moved out of

3条回答
  •  暗喜
    暗喜 (楼主)
    2021-02-04 16:53

    I just use the fact that a DOM-Element with two different border for top and right results in a diagonal line where both meet. Then put the height and width of the DOM-Element to zero and set the border-top-width to window-height and the border-right-width to window-width. Update it with JavaScript on resize... That's all.

    I've put a container in the DOM

    Following CSS is nessesary

    div#diagonal_outer {
        position: fixed !important;
        position: absolute;
        overflow: hidden;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        z-index: -100;
    }
    div#diagonal {
        position: relative;
    
        border-color: #FAE9E1 #ffffff;
        border-style: solid;
        border-left-width: 0;       
        border-top-width: 10240px;
        border-right-width: 12800px;
        border-bottom-width: 0;
    
        height: 0;
        width: 0;
    
        left: 50%;
        top: 50%;
        margin-left: -6400px; /* half of border-right-width */
        margin-top: -5120px; /* half of border-top-width */
    
        z-index: -100;
    }
    

    and following JavaScript to actualize on resize

    jQuery(document).ready(function() {
        diagonal();
    });
    
    jQuery(window).resize(function() {
        diagonal();
    });
    
    var diagonal = function() {
        var wWidth = jQuery(window).width();
        var wHeight = jQuery(window).height();
    
        jQuery('#diagonal').css('left', 0);
        jQuery('#diagonal').css('top', 0);
        jQuery('#diagonal').css('margin-left', 0);
        jQuery('#diagonal').css('margin-top', 0);
    
        jQuery('#diagonal').css('border-right-width', wWidth);
        jQuery('#diagonal').css('border-top-width', wHeight);
    };
    

    OK, the solution with CSS-skew is nice, but this one works with CSS <3

提交回复
热议问题