适合新手学习的JavaScript网页设计案例

适合新手学习的JavaScript网页设计案例

1. 基础交互

  • 动态按钮:

   JavaScript代码:

const button = document.getElementById('myButton');

button.addEventListener('mouseover', () => {
    button.style.backgroundColor = 'blue';
});

button.addEventListener('mouseout', () => {
    button.style.backgroundCol   or = 'white';
});

  HTML结构:

<button id="myButton">点击我</button>

  解释:

  • getElementById:通过 ID 获取 DOM 元素。
  • addEventListener:添加事件监听器,当鼠标悬停或移开时触发相应函数。
  • style.backgroundColor:设置元素的背景颜色。

  • 简单动画:

  JavaScript代码:

const element = document.getElementById('myElement');

function animate() {
    element.style.transform = 'translateX(200px)';
}

const button = document.getElementById('animateButton');
button.addEventListener('click', animate);

  HTML结构:

<div id="myElement">这是一个可移动的元素</div>
<button id="animateButton">点击动画</button>

  解释:

  • transform: translateX(200px):将元素向右移动 200 像素。

  • 动态显示时间:

  JavaScript代码:

function showTime() {
    const now = new Date();
    const timeString = now.toLocaleTimeString();
    document.getElementById('clock').textContent = timeString;
}

setInter   val(showTime, 1000);

  HTML结构:

<div id="clock"></div>

 解释:

  • Date():创建一个日期对象。
  • toLocaleTimeString():将日期对象转换为本地时间字符串。
  • textContent:设置元素的文本内容。

2. 表单与数据处理

  • 表单验证:

    JavaScript代码:

    const emailInput = document.getElementById('email');
    const submitButton = document.getElementById('submit');
    
    submitButton.addEventListener   ('click', () => {
        const email = emailInput.value;
        const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(email)) {
            alert('请输入正确的邮箱地址');
        }
    });
    

      HTML结构:

<input type="email" id="email">
<button id="submit">提交</button>
  • 简单抽奖:

    JavaScript代码:

    const button = document.getElementById('draw');
    const result = document.getElementById('result');
    
    button.addEventListener('click', () => {
        const randomNum = Math.floor(Math.random() * 100) + 1;
        result.textContent = `恭喜您,抽中的号码是:${randomNum}`;
    });
    

        HTML结构:

<button id="draw">抽奖</button>
<div id="result"></div>
  • 留言板:

    JavaScript代码:

    const messageInput = document.getElementById('message');
    const messageList = document.getElementById('message-list');
    
    messageInput.addEventListener('submit', (event) => {
        event.preventDefault();
        const message = messageInput.value;
        const li = document.createElement('li');
        li.textContent = message;
        messageList.appendChild(li);
        // 使用 localStorage 保存留言,以便刷新页面后仍能显示
        const messages = JSON.parse(localStorage.getItem('messages')) || [];
        messages.push(message);
        localStorage.setItem('messages', JSON.stringify(messages));
        mes   sageInput.value = '';
    });
    

       HTML结构:

<input type="text" id="message">
<button type="submit">提交</button>
<ul id="message-list"></ul>

    解释:

  • localStorage:浏览器提供的本地存储,用于保存数据。
  • JSON.parse:将字符串解析为 JSON 对象。
  • JSON.stringify:将 JavaScript 对象转换为 JSON 字符串。

3. 响应式设计与布局

  • 响应式布局:

    JavaScript代码:

    const mediaQuery = window.matchMedia('(max-width: 768px)');
    
    mediaQuery.addEventListener('change', () => {
        if (mediaQuery.matches) {
            // 手机屏幕样式
            document.body.classList.add('mobile');
        } else {
            // 桌面屏幕样式
            document.body.classList.remove('mobile');
        }
    });

        HTML结构:

<body>
    <style>
        .mobile {
            /* 手机屏幕样式 */
        }
    </style>
</body>

      

  • 轮播图:

    JavaScript代码:

    const images = document.querySelectorAll('.slider-image');
    let currentIndex = 0;
    
    function showImage(index) {
      images.forEach((image, i) => {
        image.style.display = i === index ? 'block' : 'none';
      });
    }
    
    // 自动切换
    setInterval(() => {
      currentIndex = (currentIndex + 1) % images.length;
      showImage(currentIndex);
    }, 3000);

         HTML结构:

<div class="slider">
    <img class="slider-image" src="image1.jpg">
    <img class="slider-image" src="image2.jpg">
    </div>

4. 搜索与过滤

  • 简单搜索:

    JavaScript代码:

    const searchInput = document.getElementById('search');
    const items = document.querySelectorAll('.item');
    
    searchInput.addEventListener('input', () => {
        const searchTerm = searchInput.value.toLowerCase();
        items.forEach(item => {
            if (item.textContent.toLowerCase().includes(searchTerm)) {
                item.style.display = 'block';
            } else {
                item.style.display = 'none';
            }
        });
    });

        HTML结构:

<input type="text" id="search">
<ul>
    <li class="item">搜索结果1</li>
    <li class="item">搜索结果2</li>
    </ul>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值