540 Stimmen

Wie kann ich einen Box-Shadow auf einer Seite eines Elements hinzufügen?

Ich muss einen Box-Shadow für einige block Element, aber nur (zum Beispiel) auf seiner rechten Seite. Die Art und Weise, wie ich es tue, besteht darin, das innere Element zu umhüllen mit box-shadow in eine äußere mit padding-right y overflow:hidden; so dass die drei anderen Seiten des Schattens nicht sichtbar sind.

Gibt es eine bessere Möglichkeit, dies zu erreichen? Zum Beispiel box-shadow-right ?

EDIT : Meine Absichten sind die Schaffung seulement der vertikale Teil des Schattens. Genau dasselbe wie das, was repeat-y der Regel background:url(shadow.png) 100% 0% repeat-y tun würde.

6voto

Webpixstudio Punkte 157

Hier ist mein Beispiel:

.box{

        width: 400px; 
        height: 80px; 
        background-color: #C9C; 
        text-align: center; 
        font: 20px normal Arial, Helvetica, sans-serif; 
        color: #fff; 
        padding: 100px 0 0 0;
        -webkit-box-shadow: 0 8px 6px -6px black;
           -moz-box-shadow: 0 8px 6px -6px black;
                box-shadow: 0 8px 6px -6px black;
    }

<div class="box">
</div>

4voto

Hier ist ein kleiner Hack, den ich gemacht habe.

<div id="element"><!--element that I want an one-sided inset shadow from the bottom--></div> 
<div class="one_side_shadow"></div>

1. Erstellen einer <div class="one_side_shadow"></div> direkt unter dem Element, für das ich den einseitigen Boxschatten erstellen möchte (in diesem Fall möchte ich einen einseitigen Einschubschatten für id="element" von unten kommend)

2. Dann habe ich eine reguläre box-shadow einen negativen vertikalen Versatz verwenden, um den Schatten nach oben zu einer Seite zu schieben.

`box-shadow: 0 -8px 20px 2px #DEDEE3;`

4voto

ROOT Punkte 10903

Hier ist ein codepen für jede Seite zu demonstrieren, oder einen Arbeitsausschnitt:

.boxes {
  display: flex;
  flex-wrap: wrap;
}

.box {
  margin: 20px;
  border: 1px solid #ccc;
  font-family: Helvetica Neue, Arial, sans-serif;
  font-weight: 100;
  letter-spacing: 2px;
  color: #999;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  flex: 1;
  padding: 40px;
  line-height: 1.4em;
}

.top {
  box-shadow: 0 -5px 5px -5px #333;
}

.right {
  box-shadow: 5px 0 5px -5px #333;
}

.bottom {
  box-shadow: 0 5px 5px -5px #333;
}

.left {
  box-shadow: -5px 0 5px -5px #333;
}

<div class="boxes">
  <div class="box top">Top Only</div>
  <div class="box right">Right Only</div>
  <div class="box bottom">Bottom Only</div>
  <div class="box left">Left Only</div>
</div>

2voto

madhairsilence Punkte 3740

Dies könnte ein einfacher Weg sein

border-right : 1px solid #ddd;
height:85px;    
box-shadow : 10px 0px 5px 1px #eaeaea;

Weisen Sie dies einem beliebigen Div zu

1voto

ter24 Punkte 422

Diese Website hat mir geholfen: https://gist.github.com/ocean90/1268328 (Beachten Sie, dass auf dieser Website die linke und rechte Seite zum Zeitpunkt der Veröffentlichung dieses Beitrags vertauscht sind... aber sie funktionieren wie erwartet). Sie werden im nachstehenden Code korrigiert.

<!DOCTYPE html>
<html>
    <head>
        <title>Box Shadow</title>

        <style>
            .box {
                height: 150px;
                width: 300px;
                margin: 20px;
                border: 1px solid #ccc;
            }

            .top {
                box-shadow: 0 -5px 5px -5px #333;
            }

            .right {
                box-shadow: 5px 0 5px -5px #333;
            }

            .bottom {
                box-shadow: 0 5px 5px -5px #333;
            }

            .left {
                box-shadow: -5px 0 5px -5px #333;
            }

            .all {
                box-shadow: 0 0 5px #333;
            }
        </style>
    </head>
    <body>
        <div class="box top"></div>
        <div class="box right"></div>
        <div class="box bottom"></div>
        <div class="box left"></div>
        <div class="box all"></div>
    </body>
</html>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X