찾다
웹 프론트엔드CSS 튜토리얼순수 CSS를 통해 웹페이지에서 부드러운 스크롤 탐색 메뉴를 구현하는 방법

순수 CSS를 통해 웹페이지에서 부드러운 스크롤 탐색 메뉴를 구현하는 방법

순수한 CSS를 통해 웹페이지에 부드러운 스크롤 탐색 메뉴를 구현하는 방법

사용자가 웹페이지에서 탐색하도록 안내하는 것은 중요한 디자인 요소이며, 부드러운 스크롤 탐색 메뉴는 사용자에게 친숙한 탐색 메뉴를 제공하는 방법입니다. 내비게이션 경험. 이 기사에서는 순수 CSS를 통해 이러한 탐색 메뉴를 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다.

1. HTML 구조

먼저 HTML로 탐색 메뉴의 기본 구조를 만들어야 합니다. 다음은 간단한 예입니다.

<nav class="smooth-scroll-nav">
  <ul class="smooth-scroll-menu">
    <li><a href="#section1">Section 1</a></li>
    <li><a href="#section2">Section 2</a></li>
    <li><a href="#section3">Section 3</a></li>
    <li><a href="#section4">Section 4</a></li>
  </ul>
</nav>

<section id="section1">
  <h2 id="Section">Section 1</h2>
  <p>This is the content of section 1.</p>
</section>

<section id="section2">
  <h2 id="Section">Section 2</h2>
  <p>This is the content of section 2.</p>
</section>

<section id="section3">
  <h2 id="Section">Section 3</h2>
  <p>This is the content of section 3.</p>
</section>

<section id="section4">
  <h2 id="Section">Section 4</h2>
  <p>This is the content of section 4.</p>
</section>

위의 예에서는 탐색 메뉴의 컨테이너로 <nav></nav> 요소를 만든 다음 그 안에 <ul> 요소는 해당 메뉴 항목이 추가된 메뉴 목록 역할을 합니다. 다음으로 <code><section></section> 요소를 사용하여 각 섹션의 콘텐츠를 생성합니다. 여기서 id 속성은 href 속성과 동일합니다. 해당 메뉴 항목에서. <nav></nav>元素作为导航菜单的容器,然后在其中添加了一个<ul></ul>元素作为菜单的列表,并添加了对应的菜单项。接下来,我们使用<section></section>元素来创建每个板块的内容,其中的id属性与菜单项中的href属性相对应。

二、CSS样式

接下来,我们将使用CSS来创建平滑滚动的效果。首先,我们需要在导航菜单上应用一些基本的样式:

.smooth-scroll-nav {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  background-color: #333;
  padding: 10px 0;
}

.smooth-scroll-menu {
  list-style: none;
  margin: 0;
  padding: 0;
  text-align: center;
}

.smooth-scroll-menu li {
  display: inline-block;
  margin-right: 15px;
}

.smooth-scroll-menu li:last-child {
  margin-right: 0;
}

.smooth-scroll-menu a {
  color: #fff;
  text-decoration: none;
  padding: 5px 10px;
}

.smooth-scroll-menu a:hover {
  background-color: #fff;
  color: #333;
}

在上面的代码中,我们向导航菜单容器添加了position: fixed;属性,使其固定在页面的顶部。然后,设置了相应的背景颜色、内边距和字体颜色等样式。接下来,我们使用inline-block布局将菜单项水平显示,并添加了一些间距和悬停效果。

接下来,我们将添加一个平滑滚动的效果。我们将使用CSS的scroll-behavior属性来实现这个效果。在某些情况下,浏览器可能不支持这个属性,所以我们还需要为不支持的浏览器提供一个回退方案。

html {
  scroll-behavior: smooth;
}

@media screen and (-webkit-min-device-pixel-ratio:0) {
  /* 回退方案:使用jQuery滚动动画 */
  .smooth-scroll-nav a {
    transition: all 0.3s ease-in-out;
  }
  
  .smooth-scroll-nav a[href^="#"] {
    position: relative;
  }
  
  .smooth-scroll-nav a[href^="#"]:after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 0;
    height: 2px;
    background-color: #fff;
    transition: all 0.3s ease-in-out;
    transform: translateX(-50%);
  }
  
  .smooth-scroll-nav a[href^="#"]:hover:after,
  .smooth-scroll-nav a[href^="#"]:focus:after {
    width: 100%;
  }
}

在上面的代码中,我们首先使用scroll-behavior: smooth;应用平滑滚动的效果。然后,我们使用@media查询来为不支持scroll-behavior属性的浏览器提供一个回退方案。

在回退方案中,我们为菜单项添加了一个过渡效果,使其在鼠标悬停时有一个下划线的效果。我们使用::after伪元素来创建这个下划线,并使用过渡效果来实现动画。通过相应的transition属性,我们实现了下划线的展开和收缩。

三、JavaScript附加功能

如果要在不支持scroll-behavior属性的浏览器中实现平滑滚动的效果,我们还可以使用JavaScript来实现。以下是一个使用jQuery库的示例代码:

$(function() {
  $('a[href^="#"]').on('click', function(e) {
    e.preventDefault();
    var target = $(this.getAttribute('href'));
    if (target.length) {
      $('html, body').stop().animate({
        scrollTop: target.offset().top
      }, 1000);
    }
  });
});

在上面的代码中,我们使用了jQuery的animate函数来实现平滑滚动的效果。当点击一个菜单项时,我们首先阻止了默认的的跳转行为,然后使用offset()函数获取目标元素的位置,并通过animate

2. CSS 스타일

다음으로 CSS를 사용하여 부드러운 스크롤 효과를 만들어 보겠습니다. 먼저 탐색 메뉴에 몇 가지 기본 스타일을 적용해야 합니다. 🎜rrreee🎜 위 코드에서는 탐색 메뉴 컨테이너에 position:fixed; 속성을 ​​추가하여 상단에 고정되도록 했습니다. 페이지의 . 그런 다음 해당 배경색, 패딩, 글꼴 색상 및 기타 스타일을 설정합니다. 다음으로 inline-block 레이아웃을 사용하여 메뉴 항목을 가로로 표시하고 간격과 호버 효과를 추가합니다. 🎜🎜다음으로 부드러운 스크롤 효과를 추가하겠습니다. 이 효과를 얻기 위해 CSS scroll-behavior 속성을 ​​사용할 것입니다. 어떤 경우에는 브라우저가 이 속성을 지원하지 않을 수 있으므로 이를 지원하지 않는 브라우저에 대한 대체 솔루션도 제공해야 합니다. 🎜rrreee🎜위 코드에서는 먼저 scroll-behavior: smooth;를 사용하여 부드러운 스크롤 효과를 적용했습니다. 그런 다음 @media 쿼리를 사용하여 scroll-behavior 속성을 ​​지원하지 않는 브라우저에 대한 대체 기능을 제공합니다. 🎜🎜폴백 솔루션에서는 마우스를 올렸을 때 밑줄 효과가 나타나도록 메뉴 항목에 전환 효과를 추가했습니다. ::after 의사 요소를 사용하여 이 밑줄을 만들고 전환 효과를 사용하여 애니메이션을 적용합니다. 해당 transition 속성을 ​​통해 밑줄의 확장 및 축소를 구현합니다. 🎜🎜3. JavaScript 추가 기능🎜🎜scroll-behavior 속성을 ​​지원하지 않는 브라우저에서 부드러운 스크롤을 원할 경우 JavaScript를 사용하여 구현할 수도 있습니다. 다음은 jQuery 라이브러리를 사용한 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 jQuery의 animate 기능을 사용하여 부드러운 스크롤 효과를 구현했습니다. 메뉴 항목을 클릭할 때 먼저 기본 점프 동작을 방지한 다음 offset() 함수를 사용하여 대상 요소의 위치를 ​​획득하고 animate를 통해 페이지를 구현합니다. > 스크롤 기능. 🎜🎜이로 순수 CSS 기반의 부드러운 스크롤 탐색 메뉴 구현이 완성되었습니다. 이 방법을 사용하면 웹 페이지에 대한 원활한 탐색 환경을 제공하고 CSS 스타일을 통해 전체 메뉴의 모양과 동작을 제어할 수 있습니다. 🎜

위 내용은 순수 CSS를 통해 웹페이지에서 부드러운 스크롤 탐색 메뉴를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
css ul标签怎么去掉圆点css ul标签怎么去掉圆点Apr 25, 2022 pm 05:55 PM

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

css与xml的区别是什么css与xml的区别是什么Apr 24, 2022 am 11:21 AM

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

css3怎么实现鼠标隐藏效果css3怎么实现鼠标隐藏效果Apr 27, 2022 pm 05:20 PM

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

css怎么设置i不是斜体css怎么设置i不是斜体Apr 20, 2022 am 10:36 AM

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

rtl在css是什么意思rtl在css是什么意思Apr 24, 2022 am 11:07 AM

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

css怎么实现英文小写转为大写css怎么实现英文小写转为大写Apr 25, 2022 pm 06:35 PM

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

怎么设置rotate在css3的旋转中心点怎么设置rotate在css3的旋转中心点Apr 24, 2022 am 10:50 AM

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。

css怎么去除a标签鼠标样式css怎么去除a标签鼠标样式Apr 20, 2022 am 11:07 AM

在css中,可用cursor属性去除a标签的鼠标样式,该属性用于定义鼠标指针在一个元素边界范围内所用的鼠标样式,属性值设置为none时,会去除元素的鼠标样式,设置为default时,显示默认箭头样式,语法为“a{cursor:none}”。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.