Hide part of a border in CSS?

前端 未结 3 1478
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-17 23:54

I have a few simple CSS classes for a panel with a header. It works great when the background is a fixed color because I have to use that color to hide the border behind the

相关标签:
3条回答
  • 2021-01-18 00:26

    This is a common problem.

    My solution is:

    1. Set the background of .panel-header as the same of the background image.
    2. Set z-index: 0 to make it to the top layer.
    3. Adjust the background-position property.

    When you adjust the background-position, you can also use jQuery to calculate the offset to make it accurate.

    Hope it helps, see the snippet.


    The effective code is just to add:

    .panel-header {
        z-index: 0;
        background-image: url(http://placekitten.com/510/200);
        background-position: -66px -38px;
    }
    

    The snnipet:

    .panel {
        border: 2px solid #000000;
        padding: 1em;
        margin: 1em;
        display: block;
    }
    
    .panel-header {
        position: relative;
        top: -1.5em;
        // here!
        z-index: 0;
        background-image: url(http://placekitten.com/510/200);
        background-position: -66px -38px;
        padding-left: 0.4em;
        padding-right: 0.4em;
        font-size: 1.2rem;
        font-weight: bold;
    }
    
    .panel-content {
        margin-top: -0.5em; 
    }
    <div class="panel">
      <span class="panel-header">
        Title Goes Here
        </span>
      <p class="panel-content">Glorious baklava ex librus hup hey ad infinitum. Non sequitur condominium facile et geranium incognito.</p>
      </div>
    
    <hr/>
    
    <div style="background-image: url(http://placekitten.com/510/200); padding: 2em;">
      <div class="panel">
        <span class="panel-header">
          Title Goes Here
          </span>
        <p class="panel-content">Glorious baklava ex librus hup hey ad infinitum. Non sequitur condominium facile et geranium incognito.</p>
        </div>
    </div>

    0 讨论(0)
  • 2021-01-18 00:36

    here's the sample of what you need:

    Firs of all, you need a container div with your Background (i've grabbed one from internet for this example).

    After this, you need to use and snippets from HTML.

    Your CSS

    div {
        padding: 30px;
        background: url(https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSkAuRoZnkLBZlEYtgL5GJ5w_2Tufpxh5PqkOf-Negy7eL-JGC5Mk-DW-I) no-repeat  center center;
        background-size: cover;
    }
    
    fieldset {
        border: 2px solid black;
        padding: 10px;
    }
    

    Your HTML

    <div>
     <fieldset>
      <legend>Personalia:</legend>
      <p>some text here</p>
     </fieldset>
    </div>
    

    Here you can see the Fiddle

    0 讨论(0)
  • 2021-01-18 00:41

    I think this is a more useable version, that only requires one extra div and will be transferable to almost any image. Plus and this is a big plus, no extra image section would be required. It's reusable!

    .panel-wrapper {
        overflow: hidden;
    }
    
    .panel {
        border: 2px solid #000000;
        border-top: 0;
        padding: 1em;
        margin: 1em 0 0;
    }
    
    .panel-header {
        position: relative;
        top: -1.5em;
        padding-left: 0.4em;
        padding-right: 0.4em;
        font-size: 1.2rem;
        font-weight: bold;
    }
    .panel-header:before,
    .panel-header:after {
        content: "";
        position: absolute;
        height: 2px;
        background: #000;
        top: 50%;
    }
    .panel-header:before {
        width: 100px;
        left: -100px;
    }
    .panel-header:after {
        width: 1000px;
        right: -1000px;
    }
    .panel-content {
        margin-top: -0.5em; 
    }
    <div>
        <div class="panel-wrapper">
      <div class="panel">
        <span class="panel-header">
          Title Goes Here
          </span>
        <p class="panel-content">Glorious baklava ex librus hup hey ad infinitum. Non sequitur condominium facile et geranium incognito.</p>
        </div>
        </div>
    </div>
    
    <div style="background-image: url(http://placekitten.com/510/200); padding: 2em;">
        <div class="panel-wrapper">
      <div class="panel">
        <span class="panel-header">
          Title Goes Here
          </span>
        <p class="panel-content">Glorious baklava ex librus hup hey ad infinitum. Non sequitur condominium facile et geranium incognito.</p>
        </div>
        </div>
    </div>

    0 讨论(0)
提交回复
热议问题