View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • App Intents
    • Apple Intelligence
    • Games
    • Machine Learning & AI
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Vidéos

Ouvrir le menu Fermer le menu
  • Collections
  • Toutes les vidéos
  • À propos

Plus de vidéos

  • À propos
  • Résumé
  • Code
  • Nouveautés de Safari et WebKit

    Découvrez comment les dernières technologies web de Safari et WebKit peuvent vous aider à créer des expériences exceptionnelles. Nous mettrons en évidence les différentes fonctionnalités CSS et leur fonctionnement, notamment l'animation pilotée par le défilement, les transitions inter-documents et le positionnement des ancres. Nous explorerons également les nouvelles prises en charge de médias, notamment l'audio, la vidéo, les images et les icônes.

    Chapitres

    • 0:00 - Introduction
    • 1:46 - Animation
    • 19:01 - Disposition
    • 29:05 - Effets visuels
    • 38:22 - Multimédia

    Ressources

    • Can I use
    • Web Speech API - Web APIs | MDN
    • WebKit.org – Bug tracking for WebKit open source project
    • Safari Technology Preview
    • WebKit Open Source Project
    • Submit feedback
      • Vidéo HD
      • Vidéo SD

    Vidéos connexes

    WWDC25

    • Découvrez WebKit pour SwiftUI
    • Libérez la puissance du calcul GPU avec WebGPU
    • Nouveautés pour le web spatial
    • Tout ce que vous devez savoir sur Declarative Web Push
    • Vérifiez les documents d’identité sur le web
  • Rechercher dans cette vidéo…
    • 6:18 - Progress bar code scroll() example

      footer::after {
        content: "";
        height: 1em;
        width: 100%;
        background: var(--yellow);
        left: 0;
        bottom: 0;
        position: fixed;
        transform-origin: top left;
        animation: progress-scale linear;
        animation-timeline: scroll();
      }
      
      @keyframes progress-scale {
        from { transform: scaleX(0); }
        to { transform: scaleX(1); }
      }
    • 8:36 - html an css of text blocks showcasing different code topics

      <section class="topics">
        <h3>What you can learn:</h3>
        <ul class="topics">
           <li class="topic-item">Web Development</li>
           <li class="topic-item">Computer Science</li>
           <li class="topic-item">Data Science</li>
           <!-- additional HTML... -->
        </ul>
      </section>
      
      .topic-item {
        background: var(--yellow);  
        border: 1px solid var(--gray);
        /* additional CSS... */  
      }
    • 9:12 - text blocks twisting from the left - animation

      @keyframes in-from-left {
        from {
          opacity: 0;
          transform: scale(.8) rotate(-90deg)   
                     translateY(15vh);
        }
      }
    • 9:18 - text blocks twisting from the middle - animation

      @keyframes in-from-middle {
        from {
          opacity: 0;
          transform: scale(.8)   
                     translateY(15vh);
        }
    • 9:24 - text blocks twisting from the right - animation

      @keyframes in-from-right {
        from {
          opacity: 0;
          transform: scale(.8) rotate(90deg)   
                     translateY(15vh);
        }
      }
    • 10:07 - view() timeline example with timeline and range

      .topic-item {
        animation-fill-mode: both;
        animation-timeline: view();
        animation-range:
        &:nth-child(3n + 1) { animation-name: in-from-left; }
        &:nth-child(3n + 2) { animation-name: in-from-middle; }
        &:nth-child(3n + 3) { animation-name: in-from-right; }
      }
    • 12:20 - animation range 50%

      .topic-item {
        animation-fill-mode: both;
        animation-timeline: view();
        animation-range: 0% 50%;
        &:nth-child(3n + 1) { animation-name: in-from-left; }
        &:nth-child(3n + 2) { animation-name: in-from-middle; }
        &:nth-child(3n + 3) { animation-name: in-from-right; }
      }
    • 14:20 - simple cross document view transition code

      @view-transition {
          navigation: auto;
      }
    • 16:00 - adding media query for reduced motion

      @view-transition { navigation: auto; }
      
      @media not (prefers-reduced-motion) {
        @keyframes slide-in {
          from { translate: 100vw 0; }
        }
        @keyframes slide-out {
          to { translate: -100vw 0; }
        }
      }
    • 16:22 - adding ids to html for cross document view transition

      <body>
        <nav>
          <!-- additional HTML... -->
        </nav>
      
          <section class="hero">
            <div class="hero-image">
            <!-- additional HTML... -->
        </main>
        <footer>
          <!-- additional HTML... -->
        </footer>
      <body>
    • 16:58 - slide effect for cross document view transition

      @view-transition { navigation: auto; }
      
      @media not (prefers-reduced-motion) {
        #school-info {
          view-transition-name: main-body;
        }
        ::view-transition-old(main-body) {
      
        }
        ::view-transition-new(main-body) {
      
        }
        @keyframes slide-in {
          from { translate:e100vw 0; }
      	}
      }
    • 19:48 - nav bar and profile menu

      <nav>
        <h1 class="logo">A-School of Code</h1>
        <ul>
          <li>Courses</li>
          <li>Cohorts</li>
          <li class="profile">
            <img src="https://example.com/saron.jpeg" alt="woman speaking"/>
          </li>
        </ul>
      </nav>
      
      <ul class="profile-menu">
        <li>Account</li>
        <li>Settings</li>
        <li>Profile</li>
        <li>Billing</li>
      </ul>
    • 20:37 - adding popover attributes

      <ul class="profile-menu" id="profile-menu" popover>
        <li>Account</li>
        <li>Settings</li>
        <li>Profile</li>
        <li>Billing</li>
      </ul>
    • 20:51 - adding aria to popover target

      <nav>
        <div class="wrapper">
          <h1 class="logo">A-School of Code</h1>
          <ul>
            <li>Courses</li>
            <li>Cohorts</li>
            <li class="profile">
              <button class="profile-button" aria-haspopup="true" popovertarget="profile-menu">                                                 >
                <img src="https://example.com/saron.jpg" alt="woman speaking"/>
              </button>
            </li>
          </ul>
        </div>
      </nav>
    • 21:58 - establishing the anchor

      .profile-button {
        anchor-name: --profile-button;
      }
      
      .profile-menu {
        position-anchor: --profile-button;
      }
    • 23:25 - setting the target to top right

      .profile-menu {
        position-anchor: --profile-button;
        position-area: top right;
      }
    • 23:39 - setting the target to bottom center

      .profile-menu {
        position-anchor: --profile-button;
        position-area: bottom center;
      }
    • 24:16 - setting the target to span right

      .profile-menu {
        position-anchor: --profile-button;
        position-area: span-right;
      }
    • 24:17 - setting the target to span left

      .profile-menu {
        position-anchor: --profile-button;
        position-area: span-left;
      }
    • 27:30 - intro to the anchor() function

      .profile-button {
        anchor-name: --profile-button;
      }
      
      .profile-menu {
        position-anchor: --profile-button;
        position: absolute;
        top: anchor(bottom);
        left: anchor(left);
      }
    • 28:26 - using calc and units in anchor() function

      .profile-button {
        anchor-name: --profile-button;
      }
      
      .profile-menu {
        position-anchor: --profile-button;
        position: absolute;
        top: anchor(bottom);
        left: calc(anchor(left) + 1.5em);
      }
    • 29:43 - adding a text gradient

      .logo {
        background-image: linear-gradient(to 
                          bottom right in hsl, 
                          yellow, orange);
        background-clip: text;
        color: transparent;
      }
    • 31:05 - adding a gradient to border

      .primary-btn {
        background-image: linear-gradient(to 
                          bottom right in hsl, 
                          yellow, orange);
        background-clip: border-area;
        border-color: transparent;
        background-origin: border-box;
      }
    • 32:15 - shorthand for adding gradient to border

      .primary-btn {
        background: border-area linear-gradient(to bottom right in hsl, yellow, orange);
        border-color: transparent;
      }
    • 33:33 - arrow shape using path

      .review-shape {
        clip-path: path("M0 0 L 500 0 L 600 
                         100 L 500 200 L 0 
                         200 Q 100 100 0 0 z");
      }
    • 35:01 - arrow shape using shape()

      .review-shape {
        clip-path: shape(from top left,
          line to calc(100% - 50cqh) 0%,
          line to 100% 50cqh,
          line to calc(100% - 50cqh) 100%,
          line to bottom left,
          curve to top left with 50cqh 50cqh,
          close);
      }
    • 41:42 - dynamic range limit: no limit

      img {
        dynamic-range-limit: no-limit;
      }
    • 41:57 - dynamic range limit: standard

      img {
        dynamic-range-limit: standard;
      }
    • 0:00 - Introduction
    • Les équipes Safari et WebKit ont travaillé d’arrache-pied depuis la dernière WWDC afin d’améliorer les technologies web pour une meilleure interopérabilité et une expérience utilisateur optimisée. De nouvelles fonctionnalités en matière d’animation, de mise en page, d’effets visuels et de médias, notamment des animations basées sur le défilement, le positionnement d’ancres, la prise en charge des icônes SVG et des formats multimédias améliorés, seront disponibles dans Safari cet automne.

    • 1:46 - Animation
    • L’animation est un outil puissant pour améliorer l’expérience en ligne. Elle rend les sites web plus attrayants et plus agréables. Grâce aux dernières fonctionnalités CSS, notamment les animations basées sur le défilement désormais disponibles dans Safari 19, vous pouvez améliorer votre site web sans avoir recours à JavaScript. Cette fonctionnalité est importante, car elle améliore les performances pour l’utilisateur et l’autonomie de la batterie. Les animations basées sur le défilement introduisent deux nouvelles chronologies : la chronologie de défilement et la chronologie d’affichage. La chronologie de défilement permet de lier les animations au comportement de défilement de l’utilisateur. Elle crée ainsi une expérience plus interactive. Par exemple, une barre de progression située en bas de la page peut s’allonger à mesure que l’utilisateur fait défiler la page, lui indiquant ainsi visuellement sa progression. Vous devez tenir compte de l’accessibilité lors de l’utilisation d’animations. Certaines personnes peuvent préférer moins de mouvements en raison d’une gêne liée au mouvement, qui peut être déclenchée par divers facteurs, tels que la mise à l’échelle d’objets volumineux, le zoom ou les objets se déplaçant à différentes vitesses. Tenez compte de ces facteurs pour créer des animations inclusives et agréables pour tous.

    • 19:01 - Disposition
    • Cet automne, Safari introduira un nouveau module CSS appelé « positionnement d’ancrage », qui révolutionnera la manière dont les développeurs web créent des infobulles et positionnent les menus. Le positionnement par ancrage vous permet d’ancrer facilement un élément à un autre, par exemple un menu à une photo de profil. Cette fonctionnalité permet de positionner précisément le menu par rapport à l’ancrage. Safari a également réintroduit les préréglages de fenêtre dans le mode Responsive Design, ce qui vous permet de tester plus facilement vos sites web sur différents appareils et tailles d’écran.

    • 29:05 - Effets visuels
    • Il existe plusieurs nouvelles fonctionnalités CSS permettant d’améliorer les effets visuels sur les sites web et les apps. Une fonctionnalité remarquable est l’extension de la propriété « background-clip ». Initialement utilisée pour remplir du texte avec des dégradés ou des images, cette propriété peut désormais être appliquée aux bordures. Toutefois, quelques ajustements supplémentaires, tels que la transparence de la couleur de la bordure et l’extension de l’origine de l’arrière-plan, sont nécessaires pour obtenir l’effet souhaité. Cette technique peut être utilisée pour rendre divers éléments, tels que les boutons et les cercles de progression, plus attrayants visuellement. Une autre nouveauté intéressante est la prise en charge de la fonction « shape() », qui permet aux concepteurs de créer plus facilement des formes réactives. Elle permet de gérer avec précision quelles parties d’une forme doivent s’adapter à l’écran et lesquelles doivent rester fixes, ce qui garantit une esthétique cohérente quel que soit l’appareil utilisé. C’est notamment très pratique pour les éléments décoratifs, comme les flèches ou les fonds. CSS enrichit désormais la typographie avec notamment la propriété « text-wrap: pretty », une nouveauté Safari 19. Cette fonction améliore le confort de lecture en évitant les lignes trop courtes, en limitant les césures et en harmonisant la longueur des lignes. En ajustant intelligemment les espaces entre les mots et les retours à la ligne, elle offre une mise en page plus élégante et équilibrée. Bien que subtile, cette amélioration impacte positivement l’expérience de lecture, tout en restant compatible avec les navigateurs plus anciens qui ne la supportent pas encore.

    • 38:22 - Multimédia
    • Safari s’apprête à déployer cet automne une série d’améliorations majeures concernant la gestion des médias. L’une des nouveautés phares sera l’intégration des icônes SVG, qui va considérablement enrichir l’expérience utilisateur sur différents aspects du navigateur, notamment les favicons, les bookmarklets et la page d’accueil. Les icônes au format SVG présentent l’avantage d’être plus flexibles et plus légères que les traditionnels fichiers PNG. De plus, Safari prend désormais en charge les images HDR (High Dynamic Range) dans WebKit et Safari. Les images HDR rendent le contenu web plus vivant et plus attrayant visuellement en affichant des teintes plus profondes, des gammes plus larges et des couleurs plus vives. Safari étend également sa prise en charge de divers formats multimédias, notamment Ogg Opus et Ogg Vorbis pour l’audio, et a réalisé des progrès pour garantir le bon fonctionnement de combinaisons complexes de codecs et de conteneurs sur différentes API. Ces mises à niveau vous permettent d’intégrer des fonctionnalités de podcast et d’enregistrement vidéo en temps réel dans vos apps web. De plus, Safari améliore sa prise en charge du web spatial. Vous pouvez désormais afficher des modèles 3D en stéréoscopie et inclure des vidéos immersives dans vos pages web. Ces améliorations visent à rendre le web plus interactif et plus attrayant pour tous.

Developer Footer

  • Vidéos
  • WWDC25
  • Nouveautés de Safari et WebKit
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines