
タブがオンになった時、
そのオンになったタブの下線部分だけを消したいのですが、
良い方法ありますか ?
教えてください。
よろしくお願いします。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
/*
Tabs
*/
/*//////////////////////////////////////////////
// タブ切り替え
//////////////////////////////////////////////*/
/* ノーマライズ */
ul {
list-style-type: none;
margin-block-start: 0;
margin-block-end: 0;
padding-inline-start: 0;
}
/* タブ切り替えを制御するラジオボタンを非表示 */
.tab-btn {
display:none;
}
.tab-list-wrap {
/* タブ切り替えボタンを横並び */
display:flex;
}
.tab-list {
box-sizing: border-box;
display: block;
width: 150px;
color: rgba(var(--color-b), 1.0);
font-weight: 700;
text-align:center;
margin-inline-start: 5px;
padding-block-start: 7px;
padding-block-end: 7px;
border-top: 1px solid #dddddd;
border-left: 1px solid #dddddd;
border-right: 1px solid #dddddd;
border-radius: 4px 4px 0 0;
background-image: linear-gradient(
0deg,
rgba(238, 238, 238, 0.5),
rgba(255, 255, 255, 1.0)
);
cursor:pointer;
}
/* ボタンにチェックが入った時の色 */
#tab-btn1:checked ~ .tab-list-wrap #tab-list1,
#tab-btn2:checked ~ .tab-list-wrap #tab-list2,
#tab-btn3:checked ~ .tab-list-wrap #tab-list3,
#tab-btn4:checked ~ .tab-list-wrap #tab-list4 {
background: rgba(255, 255, 255, 1.0);
}
/*初期状態を非表示に*/
.tab-content {
display: none;
/* box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 1.0); */
border: solid 1px #dddddd;
}
/* 対応するボタンにチェックが入ったときに表示 */
#tab-btn1:checked ~ .tab-content-wrap #tab-content1,
#tab-btn2:checked ~ .tab-content-wrap #tab-content2,
#tab-btn3:checked ~ .tab-content-wrap #tab-content3,
#tab-btn4:checked ~ .tab-content-wrap #tab-content4 {
display: block;
}
</style>
</head>
<body>
<input id="tab-btn1" class="tab-btn" name="tab" type="radio" checked>
<input id="tab-btn2" class="tab-btn" name="tab" type="radio">
<input id="tab-btn3" class="tab-btn" name="tab" type="radio">
<input id="tab-btn4" class="tab-btn" name="tab" type="radio">
<ul class="tab-list-wrap">
<li><label id="tab-list1" class="tab-list" for="tab-btn1">タブ 01</label></li>
<li><label id="tab-list2" class="tab-list" for="tab-btn2">タブ 02</label></li>
<li><label id="tab-list3" class="tab-list" for="tab-btn3">タブ 03</label></li>
<li><label id="tab-list4" class="tab-list" for="tab-btn4">タブ 04</label></li>
</ul>
<div class="tab-content-wrap">
<div id="tab-content1" class="tab-content">
<span>タブ 01</span>
</div>
<div id="tab-content2" class="tab-content">
<span>タブ 02</span>
</div>
<div id="tab-content3" class="tab-content">
<span>タブ 03</span>
</div>
<div id="tab-content4" class="tab-content">
<span>タブ 04</span>
</div>
</div>
</body>
</html>
No.1ベストアンサー
- 回答日時:
こんにちは
意図的なのかどうか不明ですが、タブ側のボーダーの色が、グラデーションの最下部の色とほぼ同じなので、通常時は下線があるように表示され、選択時は消える様な表示になっています。
ですので、コンテンツ側の上線を消せば良いのですが、部分的に消すことは難しいですね。
方法として簡単に思いつくのは以下でしょうか。
1)::afterなどで、タブと同じ幅の白色のブロック要素を枠線に重ねる。
2)コンテンツ全体を上にずらして、タブのブロックと重ねるようにする。
以下は、2)の方法での例です。
枠線の太さ分(=1px)上げればよいので、
.tab-content-wrap {
margin-top: -1px;
}
を追加してみるのではいかがでしょうか?
※ 全体のCSSの構成を変えると、コンテンツが手前側に表示される場合がありますので、その際は z-index で制御してください。
※ ご提示のCSSでは、変数 --color-b が定義されていないようですが、直接には関係が無いので無視しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
背景を四隅に固定する
-
サイトにコンテンツを並べる際...
-
【CSS】floatで左右に並べた...
-
Ctrl+F(検索)の窓を出したいの...
-
CSS <div>の入れ子が反映さ...
-
MAX関数を使ってからLEFT JOIN...
-
複数のリンク画像を一定時間で...
-
jQueryでネスト構造の<li>がク...
-
JavaScript スライドの画像にリ...
-
HTMLからimgのsrcのみを正規表...
-
Vb.net2005での画像の合成方法
-
Javascript初心者|jQueryの.va...
-
商品回転画像の作成方法
-
Fire Foxでロールオー...
-
iframe内のリンクが飛ばないの...
-
eclipseでcssを使うためには?
-
【HP作成】クリックすると下...
-
createElementで作成した要素を...
-
日替わりで画像を変更したい
-
htmlの記述で link rel=styles...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スクロール可能なチェックボックス
-
文字をクリックしたら別の文字...
-
【CSS】floatで左右に並べた...
-
スタイルシートで画面を上下に...
-
CSS <div>の入れ子が反映さ...
-
スライダーの枠に動画を収める...
-
JQuery UIを使用したドラッグ&...
-
Ctrl+F(検索)の窓を出したいの...
-
離れた場所にマウスオーバーで...
-
css固定したフッターが本文と重...
-
メニューやヘッダー背景だけを...
-
動く(流れる)文字列はどうや...
-
リンクで違うページの指定箇所...
-
CSSで背景を下までのばすには?
-
サイトにコンテンツを並べる際...
-
ラジオボタンで段階評価
-
1行で左寄せと右寄せと中央揃え...
-
CSSでdivのheightを動的に
-
CSSでdivの縦幅を指定する方法
-
html スクロール要素を下から表...
おすすめ情報