Cut Corners using CSS

后端 未结 15 1421
悲&欢浪女
悲&欢浪女 2020-11-22 03:34

I\'m looking to \"cut\" the top left corner of a div, like if you had folded the corner of a page down.

I\'d like to do it in pure CSS, are there any methods?

15条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-22 03:49

    If you need a diagonal border instead of a diagonal corner, you can stack 2 divs with each a pseudo element:

    DEMO

    http://codepen.io/remcokalf/pen/BNxLMJ

    .container {
      padding: 100px 200px;
      overflow: hidden;
    }
    
    div.diagonal {
      background: #da1d00;
      color: #fff;
      font-family: Arial, Helvetica, sans-serif;
      width: 300px;
      height: 300px;
      padding: 70px;
      position: relative;
      margin: 30px;
      float: left;
    }
    
    div.diagonal2 {
      background: #da1d00;
      color: #fff;
      font-family: Arial, Helvetica, sans-serif;
      width: 300px;
      height: 300px;
      padding: 70px;
      position: relative;
      margin: 30px;
      background: #da1d00 url(http://www.remcokalf.nl/background.jpg) left top;
      background-size: cover;
      float: left;
    }
    
    div.diagonal3 {
      background: #da1d00;
      color: #da1d00;
      font-family: Arial, Helvetica, sans-serif;
      width: 432px;
      height: 432px;
      padding: 4px;
      position: relative;
      margin: 30px;
      float: left;
    }
    
    div.inside {
      background: #fff;
      color: #da1d00;
      font-family: Arial, Helvetica, sans-serif;
      width: 292px;
      height: 292px;
      padding: 70px;
      position: relative;
    }
    
    div.diagonal:before,
    div.diagonal2:before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      border-top: 80px solid #fff;
      border-right: 80px solid transparent;
      width: 0;
    }
    
    div.diagonal3:before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      border-top: 80px solid #da1d00;
      border-right: 80px solid transparent;
      width: 0;
      z-index: 1;
    }
    
    div.inside:before {
      content: '';
      position: absolute;
      top: -4px;
      left: -4px;
      border-top: 74px solid #fff;
      border-right: 74px solid transparent;
      width: 0;
      z-index: 2;
    }
    
    h2 {
      font-size: 30px;
      line-height: 1.3em;
      margin-bottom: 1em;
      position: relative;
      z-index: 1000;
    }
    
    p {
      font-size: 16px;
      line-height: 1.6em;
      margin-bottom: 1.8em;
    }
    
    #grey {
      width: 100%;
      height: 400px;
      background: #ccc;
      position: relative;
      margin-top: 100px;
    }
    
    #grey:before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      border-top: 80px solid #fff;
      border-right: 80px solid #ccc;
      width: 400px;
    }

    Header title

    Yes a CSS diagonal corner is possible

    Header title

    Yes a CSS diagonal corner with background image is possible

    Header title

    Yes a CSS diagonal border is even possible with an extra div

提交回复
热议问题