2017-12-18 7 views
2

イメージにスケッチスタイルのボーダーを設定するためのコードを作成しました。以下に見られることができ は:cssを使用してレスポンススケッチボーダーを設定する

jQuery('.border').click(function(){ 
 
    jQuery('.border').toggleClass('resize'); 
 
});
body { 
 
    background-color: lightblue; 
 
} 
 

 
.border { 
 
    width: 200px; 
 
    margin: 0px auto; 
 
    position: relative; 
 
    -webkit-transition: all 2s; 
 
    /* Safari */ 
 
    transition: all 2s; 
 
    background-image: url(https://nosycrow.com/wp-content/themes/nosy-crow/images/borders/black-400-sides.png); 
 
    background-repeat: repeat-y; 
 
    background-size: 100%; 
 
    border-radius: 15px; 
 
    background-position: 0 0; 
 
    padding: 5px; 
 
    overflow: hidden; 
 
} 
 
.border .padding::before, .border .padding::after { 
 
    content: ''; 
 
    display: block; 
 
    position: absolute; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 0; 
 
    background: url(https://nosycrow.com/wp-content/themes/nosy-crow/images/borders/black-400.png) no-repeat; 
 
    background-size: 100%; 
 
    z-index: 50; 
 
    padding-bottom: 5.4%; 
 
    pointer-events: none; 
 
} 
 
.border .padding::before { 
 
    top: 0px; 
 
} 
 
.border .padding::after { 
 
    bottom: 0px; 
 
    background-position: 0px 100%; 
 
} 
 

 
.border.resize { 
 
    width: 500px; 
 
} 
 

 
img { 
 
    width: 100%; 
 
    height: auto; 
 
    position: relative; 
 
    border-radius: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="border"> 
 
    <div class="padding"> 
 
     <img src="https://nosycrow.com/wp-content/uploads/imported-books/Spectre-Collectors-Too-Ghoul-For-School-312087-3-593x911.jpg" alt=""> 
 
    </div> 
 
</div>

しかし、問題がある、ボックスは正確に応答しません。それをテストするために、少しjqueryスクリプトを追加しました。イメージをクリックすると、イメージのサイズが変更されます。そして、画像が大きくなると、境界が正しく整列して見えないことがわかります。

これを解決するには、メディアクエリーを追加する必要があります。メディアクエリーでは、上部と境界線の境界を調整できるようにする必要があります。しかし、それ以上の解決策はありますか?

+0

画面サイズが変更されたときあなたは、いくつかの余裕がサイズ変更に応じて(またはウィンドウサイズのチェック)を追加することができますので、あなたは、jqueryのを使用して境界線のプロパティを変更することができ、それを行う必要がありますトリック。 $(window).resize(function(){ $( 'border').css( '/ *変更する* /'); }); – JoelBonetR

答えて

1

私は別の解決策を使用してそれを固定しました。古い学校の種類。私は、3つの画像、水平線、垂直線とコーナーを使用し、異なるdivを使用してそれらの位置に設定するために使用しました。ここで見ることができ

jQuery('.sketchy-box').click(function(){ 
 
    jQuery('.sketchy-box').toggleClass('resize'); 
 
});
.sketchy-box { 
 
    width: 300px; 
 
    height: auto; 
 
    margin: 0px auto; 
 
    position: relative; 
 
    -webkit-transition: all 1s; 
 
    /* Safari */ 
 
    transition: all 1s; 
 
} 
 
.sketchy-box .bdt { 
 
    position: absolute; 
 
    z-index: 1; 
 
    left: 10px; 
 
    top: 0px; 
 
    width: calc(100% - 20px); 
 
    height: 5px; 
 
    background: url("http://aslamdoctor.com/taskapp/[email protected]") left top repeat-x; 
 
} 
 
.sketchy-box .bdb { 
 
    position: absolute; 
 
    z-index: 1; 
 
    left: 10px; 
 
    bottom: 0px; 
 
    width: calc(100% - 20px); 
 
    height: 5px; 
 
    background: url("http://aslamdoctor.com/taskapp/[email protected]") left top repeat-x; 
 
    transform: rotate(180deg); 
 
} 
 
.sketchy-box .bdl { 
 
    position: absolute; 
 
    z-index: 1; 
 
    left: 0px; 
 
    top: 10px; 
 
    width: 5px; 
 
    height: calc(100% - 20px); 
 
    background: url("http://aslamdoctor.com/taskapp/[email protected]") left top repeat-y; 
 
    transform: rotate(180deg); 
 
} 
 
.sketchy-box .bdr { 
 
    position: absolute; 
 
    z-index: 1; 
 
    right: 0px; 
 
    top: 10px; 
 
    width: 5px; 
 
    height: calc(100% - 20px); 
 
    background: url("http://aslamdoctor.com/taskapp/[email protected]") left top repeat-y; 
 
} 
 
.sketchy-box .corner { 
 
    position: absolute; 
 
    z-index: 1; 
 
    width: 13px; 
 
    height: 13px; 
 
    background: url("http://aslamdoctor.com/taskapp/[email protected]") left top no-repeat; 
 
} 
 
.sketchy-box .ctl { 
 
    left: 0px; 
 
    top: 0px; 
 
} 
 
.sketchy-box .ctr { 
 
    right: 0px; 
 
    top: 0px; 
 
    transform: rotate(90deg); 
 
} 
 
.sketchy-box .cbl { 
 
    left: 0px; 
 
    bottom: 0px; 
 
    transform: rotate(-90deg); 
 
} 
 
.sketchy-box .cbr { 
 
    right: 0px; 
 
    bottom: 0px; 
 
    transform: rotate(180deg); 
 
} 
 
.sketchy-box img { 
 
    width: 100%; 
 
    height: auto; 
 
    position: relative; 
 
    z-index: 0; 
 
    border-radius: 10px; 
 
} 
 

 
.sketchy-box.resize { 
 
    width: 1000px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="sketchy-box"> 
 
    <div class="bdl"></div> 
 
    <div class="bdr"></div> 
 
    <div class="bdt"></div> 
 
    <div class="bdb"></div> 
 
    <div class="corner ctl"></div> 
 
    <div class="corner ctr"></div> 
 
    <div class="corner cbl"></div> 
 
    <div class="corner cbr"></div> 
 
    <img src="https://nosycrow.com/wp-content/uploads/2015/09/BooksAlways_26-27-593x320.jpg" alt=""> 
 
</div>

関連する問題