Je construis un petit site web en utilisant bootstrap. La structure de base ressemble à ceci:
<!DOCTYPE html>
<html>
<head>
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0-wip/css/bootstrap.min.css" rel="stylesheet">
<style tpye="text/css">
.row {
height: 100px;
background-color: green;
}
.container {
margin-top: 50px;
box-shadow: 0 0 10px 10px black; /*THIS does not work as expected*/
}
</style>
</head>
<body>
<div class="container">
<div class="row">one</div>
<div class="row">two</div>
<div class="row">three</div>
</div>
</body>
</html>
Voyez-le en action: http://jsfiddle.net/ZDCjq/
Maintenant, je veux que tout le site ait une ombre portée des 4 côtés. Le problème est que la grille d’amorçage utilise des marges négatives et que les lignes se superposent à l’ombre.
Y a-t-il un moyen d'accomplir cela en laissant toutes les fonctionnalités de bootstrap intactes?
EDIT: Le résultat attendu est le suivant: http://i.imgur.com/rPKuDhc.png
EDIT: Ce problème n’était présent que jusqu’à bootstrap 3 rc2 . Le bootstrap final 3 rend la solution de contournement ci-dessous obsolète.
@import url("http://netdna.bootstrapcdn.com/bootstrap/3.0.0-wip/css/bootstrap.min.css");
.row {
height: 100px;
background-color: green;
}
.container {
margin-top: 50px;
box-shadow: 0 0 30px black;
padding:0 15px 0 15px;
}
<div class="container">
<div class="row">one</div>
<div class="row">two</div>
<div class="row">three</div>
</div>
</body>
Ajoutez une div supplémentaire autour de toutes les div de conteneur que vous souhaitez que l'ombre portée encapsule. Ajoutez les classes drop-shadow et container à la div supplémentaire. La classe .container gardera la fluidité. Utilisez la classe .drop-shadow (ou ce que vous préférez) pour ajouter la propriété box-shadow. Puis ciblez le div .drop-shadow et annulez les styles indésirables ajoutés par .container - tels que le remplissage gauche et droit.
Exemple: http://jsfiddle.net/SHLu4/2/
Ça va être quelque chose comme:
<div class="container drop-shadow">
<div class="container">
<div class="row">
<div class="col-md-8">Main Area</div>
<div class="col-md-4">Side Area</div>
</div>
</div>
</div>
Et votre CSS:
<style>
.drop-shadow {
-webkit-box-shadow: 0 0 5px 2px rgba(0, 0, 0, .5);
box-shadow: 0 0 5px 2px rgba(0, 0, 0, .5);
}
.container.drop-shadow {
padding-left:0;
padding-right:0;
}
</style>
Pour ceux qui veulent l'ombre de la boîte sur le conteneur col-*
et non sur le .container
, vous pouvez ajouter une autre div
juste à l'intérieur de l'élément col-*
et y ajouter l'ombre. Cet élément n'aura pas le rembourrage et n'interférera donc pas.
La première image a le box-shadow
sur l'élément col-*
. En raison du remplissage de 15 pixels sur l'élément col
, l'ombre est poussée vers l'extérieur de l'élément div
plutôt que sur ses bords visuels.
<div class="col-md-4" style="box-shadow: 0px 2px 25px rgba(0, 0, 0, .25);">
<div class="thumbnail">
{!! HTML::image('images/sampleImage.png') !!}
</div>
</div>
La seconde image a un wrapper div
avec le box-shadow
dessus. Cela placera le box-shadow
sur les bords visuels de l'élément.
<div class="col-md-4">
<div id="wrapper-div" style="box-shadow: 0px 2px 25px rgba(0, 0, 0, .25);">
<div class="thumbnail">
{!! HTML::image('images/sampleImage.png') !!}
</div>
</div>
</div>
Vous devez donner un identifiant au conteneur et l'utiliser dans votre fichier CSS personnalisé (qui doit être lié après le css bootstrap)
#container {
box-shadow: values
}