[Edit] Dans le futur (mobile) Safari 9 il y aura -webkit-backdrop-filter
pour exactement cela. Voir ce que j'ai fait pour le mettre en valeur.
J'y ai pensé pendant les 4 dernières semaines et j'ai trouvé cette solution.
Démonstration en direct
[Edit] J'ai écrit un billet plus approfondi sur CSS-Tricks
Cette technique utilise Régions CSS donc le support du navigateur n'est pas le meilleur pour le moment. ( http://caniuse.com/#feat=css-regions )
L'élément clé de cette technique consiste à séparer le contenu de la mise en page en utilisant le CSS Region. Définissez d'abord une .content
élément avec flow-into:content
et ensuite utiliser la structure appropriée pour brouiller l'en-tête.
La structure de la mise en page :
<div class="phone">
<div class="phone__display">
<div class="header">
<div class="header__text">Header</div>
<div class="header__background"></div>
</div>
<div class="phone__content">
</div>
</div>
</div>
Les deux parties importantes de cette disposition sont .header__background
et .phone__content
- Ce sont les conteneurs dans lesquels le contenu doit circuler.
Pour utiliser les régions CSS, il suffit de flow-from:content
( .content
s'écoule dans la région nommée content
)
Maintenant vient la partie délicate. Nous voulons que le contenu passe toujours par le .header__background
car c'est la section où le contenu sera blidé. (en utilisant webkit-filter:blur(10px);
)
Pour ce faire, il faut transfrom:translateY(-$HeightOfTheHeader)
le site .content
afin de s'assurer que le contenu passe toujours par le canal .header__background
. Cette transformation tout en cachant toujours une partie du contenu sous l'en-tête. Pour résoudre ce problème, il suffit d'ajouter
.header__background:before{
display:inline-block;
content:'';
height:$HeightOfTheHEader
}
pour tenir compte de la transformation.
Cela fonctionne actuellement dans :
- Chrome 29+ (activer 'experimental-webkit-features'/'enable-experimental-web-platform-features')
- Safari 6.1 Seed 6
- iOS7 ( lent et sans défilement )
2 votes
Une préoccupation plus pressante à mon avis est de savoir comment configurer un élément qui applique un flou dynamique à tout objet situé derrière lui. Ainsi, si vous aviez un objet capable d'effectuer un panoramique et un zoom, l'élément situé au-dessus serait flou de manière dynamique avec un faible impact sur les performances.
1 votes
Voir aussi cette question pour un problème similaire.
43 votes
Je trouve peut-être plus inquiétant que l'on veuille en faire une "fonctionnalité IOS7" alors que l'interface Aero de Windows Vista fait exactement la même chose avec les couleurs de ses fenêtres depuis 2006.
1 votes
@NielsKeurentjes Heh, un vrai point. J'ai incorporé cet effet dans un design il y a quelques années après m'être inspiré de Windows. Cependant, à l'époque, j'ai choisi la voie la plus simple, celle de la cuisson de l'effet dans les images. ryanwilliams.co.uk/previews/made2race/1.html
0 votes
geoffreydesigns.com/ios-parallax-effect-with-css