実現したいこと
bxsliderというjqueryのスライダープラグインを使用してスライダーの表示をしました。
(ウィンドウの横幅いっぱいに表示をしたかったため、こちらのmod版を使用しました)
https://lab-inc.jp/staffblog/front-end/javascript/201509/02_16.html
スライダー自体は、期待する挙動で動作しているのですが
今回、このスライダーの中央の画像に、もう一枚画像を重ねたいのです。
具体的に説明すると、
テキストが記載されている透過PNGの画像を上に重ねて
スライダーに使用しているどの画像が中央に表示されても
同じ位置に画像のテキストが表示されるようにしたいです。
スライダーのdivに
position:relative
重ねて表示したい画像のimgに
position:absolute
を指定して、表示を試みたのですが
ウィンドウサイズを変更した際に、
重ねた画像の表示位置がずれてしまいます。
希望する挙動としては、ウィンドウサイズを縮めた時には
スライダーの中央に表示されている画像と同じように縮小してほしいです。
要するに、中央の画像の特定の位置に常に画像が重なっていてほしいです。
該当のソースコード(HTML)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,user-scalable=0">
<link rel="stylesheet" href="css/ress.css">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/bxslider/4.1.2/jquery.bxslider.css" />
<link rel="stylesheet" href="css/slider.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="js/jquery.bxslider.js"></script>
<title>TEST</title>
</head>
<body>
<div class="mod-bxslider-demo-01">
<!-- 重ねたい画像 -->
<img src="images/text.png" class="cover" id="slider_wrap" />
<ul class="js-demo-01">
<li><a href="#"><img src="images/slide01_pc.jpg" alt="画像1"></a></li>
<li><a href="#"><img src="images/slide02_pc.jpg" alt="画像2"></a></li>
<li><a href="#"><img src="images/slide03_pc.jpg" alt="画像3"></a></li>
</ul>
</div>
</body>
<script>
(function ($) {
$(window).on("load", function () {
$(".js-demo-01").bxSlider({
auto: true,
infiniteLoop: true,
responsive: true,
speed: 1000,
displaySlideQty: 1,
pager: true,
slideWidth: 960,
startSlide: 0,
minSlides: 1,
maxSlides: 1,
moveSlides: 1,
slideMargin: 0,
pause: 4000,
});
});
}(jQuery));
</script>
</html>
該当のソースコード(css)
.mod-bxslider-demo-01 {
overflow: hidden;
position: relative;
width: 100%;
}
.bx-viewport:before,
.bx-viewport:after {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: -100%;
background-color: rgba(0, 0, 0, 0.3);
z-index: 1000;
}
.bx-wrapper .bx-viewport {
overflow: visible !important;
left: 0;
border-width: 0;
box-shadow: none;
}
.bx-viewport:before {
right: 100%;
left: -100%;
}
.bx-viewport:after {
left: 100%;
right: -100%;
}
.cover{
position: absolute;
left: 100px;
top: 100px;
/* ここのwidthとheightは重ねたい画像のサイズを入れています */
width:576px;
height:319px;
z-index: 300;
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+3
.cover{
position: absolute;
left: 100px;
top: 100px;
/* ここのwidthとheightは重ねたい画像のサイズを入れています */
width:576px;
height:319px;
z-index: 300;
}
上記CSSでは上に重ねる画像のサイズと配置が固定pxになっています。
希望する挙動としては、ウィンドウサイズを縮めた時には
スライダーの中央に表示されている画像と同じように縮小してほしいです。
要するに、中央の画像の特定の位置に常に画像が重なっていてほしいです。
このようにしたいのであれば、上に重ねる画像のサイズと配置も%の相対サイズで指定しないとダメではないでしょうか?
サイズについてはスライダー領域を親としてそのwidthとheightを基準に割合を算出すれば良いです。
位置を常に上下左右中央に配置したいのであれば、次のようにabsolute指定すれば全ブラウザ環境で中央になるはずです。(基準となる親要素がスライダー領域全体をちゃんと囲んでいることが前提。念のため要確認)
/*上下左右中央に絶対配置するためのコード*/
セレクタ {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2016/07/26 00:36
.coverのleft:/top:が固定値ですが、どの幅のときも固定値でしょうか。
ludient
2016/07/26 00:51
.coverのleft:/top:/は
メディアクエリなどでウィンドウサイズでの切り替えはしておりません。
固定値で記載していますが、試行錯誤の結果なので、固定値で指定したいというわけではありません。
分かりにくくて申し訳ありません。
LibertyBell3
2016/07/26 07:40
ほぼ同じような案件を制作しましたが、その時は、bxSliderだと、読み込みのタイミングが悪いのか、上にのせる部分のサイズがきれいに取得されなかったので、FlexSliderに変更した経験があります。
私は本体を思い通りにいじられるだけのスキルは無いので…(笑)
で、他のScriptになってもいい&スライダー画像のリンクから直接移動できなくなる方法で良ければ回答いたしますが、いかがでしょうか?
ちなみに、上に載せる画像にはリンク設定可能ですので、同一ページに飛ぶ
設定であれば、なんとか実現可能かと思います。
ludient
2016/07/26 09:12
ご提案ありがとうございます!
bxsliderでなくても問題ありませんので、ひとつの案として是非ご教授いただけないでしょうか…?
よろしくお願いいたします。
LibertyBell3
2016/07/26 11:42
すみません。寝ておりました…私の対応より簡潔だし、お望み通りになって良かったです。
ludient
2016/07/26 16:31
コメントありがとうございます!
今回は、希望する動作がbxsliderで実現できたのですが
FlexSliderを使用するという、ご経験に基づいたご回答もすごく参考になりました!
とても感謝しております。