CSS to create curved corner between two elements?

前端 未结 6 1110
天命终不由人
天命终不由人 2020-12-13 09:51

My UI has an unordered list on the left. When a list item is selected, a div appears on the right of it. I\'d like to have a curved outer corner

6条回答
  •  北荒
    北荒 (楼主)
    2020-12-13 10:11

    Well, as it turns out, I managed to solve the problem myself. I hacked together a demo -- check it out.

    Essentially, several additional DOM elements are required and a fair amount of CSS. And as mentioned in the link provided by @Steve, a solid background is required. I don't believe there is any way to do this over a gradient background or other pattern.

    I ended up with HTML like this:

    ul.selectable {
      padding-top: 1em;
      padding-bottom: 1em;
      width: 50%;
      float: left;
    }
    ul.selectable li {
      margin: 0 3em 0 4em;
      border-radius: 8px;
      -webkit-border-radius: 8px;
      -khtml-border-radius: 8px;
      -moz-border-radius: 8px;
    }
    ul.selectable li.active {
      margin-right: 0;
    }
    ul.selectable li.active dl {
      background-color: #4f9ddf;
    }
    ul.selectable li dt {
      background-color: #dfd24f;
      padding: 1em;
      margin-left: -2em;
      margin-right: -2em;
      -webkit-border-radius: 8px;
      -khtml-border-radius: 8px;
      -moz-border-radius: 8px;
      border-radius: 8px;
    }
    ul.selectable li dd {
      padding: 0.25em;
      background-color: #fff;
    }
    ul.selectable li.active dt {
      background-color: #4f9ddf;
      margin-right: 0;
      -webkit-border-top-right-radius: 0;
      -webkit-border-bottom-right-radius: 0;
      -khtml-border-top-right-radius: 0;
      -khtml-border-bottom-right-radius: 0;
      -moz-border-radius-topright: 0;
      -moz-border-radius-bottomright: 0;
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
    }
    ul.selectable li.active dd.top {
      -webkit-border-bottom-right-radius: 8px;
      -khtml-border-bottom-right-radius: 8px;
      -moz-border-radius-bottomright: 8px;
      border-bottom-right-radius: 8px;
    }
    ul.selectable li.active dd.bot {
      -webkit-border-top-right-radius: 8px;
      -khtml-border-top-right-radius: 8px;
      -moz-border-radius-topright: 8px;
      border-top-right-radius: 8px;
    }
    div.right {
      float: left;
      padding-top: 3em;
      width: 50%;
    }
    div.content {
      height: 15em;
      width: 80%;
      background-color: #4f9ddf;
      padding: 1em;
      -webkit-border-radius: 8px;
      -khtml-border-radius: 8px;
      -moz-border-radius: 8px;
      border-radius: 8px;
    }
    • Title
    • Title
    • Title
    This is content

    I haven't optimized any of the CSS as I just hacked it together. But perhaps it will help someone else. I've only tested this in Google Chrome on Mac OSX.

提交回复
热议问题