質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.49%

box-shadow<div>要素内の画像に。

解決済

回答 5

投稿

  • 評価
  • クリップ 2
  • VIEW 2,149

score 216

例えば以下の様にマークアップした画像があります。

<div class="Wrapper">
        <img src="home" alt="" height="600" width="600" border="0">
</div>

.Wrapper {
            width:300px;
            height: 150px;
            border:1px solid #000;
            overflow: auto;
            box-shadow:0px 1px 3px rgba(216,213,213,1) inset;
        }

この時<div>の内側にシャドウを入れたいのですが、画像にはシャドウがかかりません。スクロールして画像の上にシャドウがくるような方法はありますか?
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

0

シャドウを見やすくするのに、濃くしてます。画像のパスは私のローカルのやつをてきとうに当ててますのでご了承ください。

以下は、スクロールバーの出るタイプ。
<style type="text/css">
html { width:300px;}
.Wrapper {
    width:300px;
    height: 150px;
    border:1px solid #000;
    overflow: hidden;
}
.WrapperInner {
    width:300px;
    height: 150px;
    overflow: auto;
    position:relative;
}
img { display:block; position:relative;}
.WrapperInner:after { content:''; width:600px; height:600px; display:block; box-shadow:0px 0px 10px rgba(0,0,0,1) inset; position:absolute; top:0; left:0;}
</style>
<div class="Wrapper">
    <div class="WrapperInner">
        <img src="demo1.png" alt="" height="600" width="600" border="0">
    </div>
</div>

スクロールバーをオーバーフローで見えなくした感じ。ただし横スクロールできない。
<style type="text/css">
html { width:300px;}
.Wrapper {
    width:300px;
    height: 150px;
    border:1px solid #000;
    overflow: hidden;
}
.WrapperInner {
    width:315px;
    height: 165px;
    overflow: auto;
    position:relative;
}
img { display:block; position:relative;}
.WrapperInner:after { content:''; width:600px; height:600px; display:block; box-shadow:0px 0px 10px rgba(0,0,0,1) inset; position:absolute; top:0; left:0;}
</style>
<div class="Wrapper">
    <div class="WrapperInner">
        <img src="demo1.png" alt="" height="600" width="600" border="0">
    </div>
</div>

うーん、それともこうかなぁ。スクロールバーの内側に設置。これかな?
<style type="text/css">
html { width:300px;}
.Wrapper {
    width:300px;
    height: 150px;
    border:1px solid #000;
    overflow: hidden;
    position:relative;
}
.WrapperInner {
    width:300px;
    height: 150px;
    overflow: auto;
    position:relative;
}
img { display:block; position:relative;}
.Wrapper:after { content:''; width:285px; height:135px; display:block; box-shadow:0px 0px 10px rgba(0,0,0,1) inset; position:absolute; top:0; left:0;pointer-events: none;}
</style>
<div class="Wrapper">
    <div class="WrapperInner">
        <img src="demo1.png" alt="" height="600" width="600" border="0">
    </div>
</div>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/02 22:35

    できました。ありがとうございます。
    応用して使ってみます。

    キャンセル

0

img要素ではなく、background-imageプロパティであれば影がかかるようですが、それは難しいのでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/29 15:09

    <img>が複数あるため、それは難しいです。
    ありがとうございます。

    キャンセル

0

擬似要素をdivと同じサイズで重なるように配置して、z-indexで手前に持ってきてbox-shadowをつけてやればいいんじゃないでしょうか?
もしかして見当違いなこと言ってますかね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/29 18:33

    ありがとうございます。
    まだやっていないのですが、参考となるページなど方法ありましたら教えて頂けますでしょうか?

    キャンセル

0

へー、スマホサイトですかね?
おもしろいですね。

html { width:300px;}
.Wrapper {
    width:300px;
    height: 150px;
    border:1px solid #000;
    overflow: auto;
    position:relative; /* 追記 */
}
img { display:block; position:relative;} /* 追記 */
.Wrapper:after { content:''; width:600px; height:600px; display:block; box-shadow:0px 1px 3px rgba(216,213,213,1) inset; position:absolute; top:0; left:0;} /* 追記 */

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/31 22:02

    回答ありがとうございます。
    教えて頂いたcssを適用すると、初期状態だとシャドウがかかるのですが
    スクロールするとシャドウがかかりません。

    当方のMacのChorome、Safari、Firefoxで確認しています。

    キャンセル

  • 2015/06/01 14:18

    あれ、スマホじゃなかったですか?
    通常のパソコン用ブラウザで見るとオーバーフローでスクロールバーが出るので意図しない形になるのかなと推測できましたが、どうでしょ?
    であればほとんどのブラウザでスクロールバーのサイズが15pxなので、外枠を入れ子にすればいけるかと。
    ただしスマホとPCでメディアクエリかjsで処理をわけないとだめですが。
    スマホからの投稿につき、具体的なソースが無くてすみません。

    キャンセル

  • 2015/06/01 23:29

    スマホではなく、PCからの閲覧でうまくいきません。(スマホはすいません、確認していないです)

    >外枠を入れ子にすればいけるかと。
    時間があるときで良いので、具体的なコードを教えて頂けると非常に助かります。

    キャンセル

0

次の様に要素を一つ増やせば可能ですが、そのままだと難しいのではないでしょうか。
<div class="Wrapper">
    <div class="Image">
        <img src="home" alt="" height="600" width="600" border="0">
    </div>
</div>
*CSSを修正しました
.Wrapper {
    overflow: hidden;
    position: relative;
    width: 300px;
    height: 150px;
    margin: 50px;
    border: 1px solid #000;
}

.Wrapper::before {
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;
    width: 300px;
    height: 150px;
    content: "";
    box-shadow: 0 1px 3px rgba(213,213,213,1) inset;
    pointer-events: none; /* IEは11から対応 */
}

.Image {
    overflow: auto;
    position: relative;
    width: inherit;
    height: inherit;
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/01 01:33

    すみません、少し勘違いしていた様です。
    これだと上部にしかシャドウがかからないですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る