html语言下拉切换

	  <style>


    /* Language Selector Styles */
    .language-selector {
        position: relative;
        display: inline-block;
        
        font-family: Arial, sans-serif;
    }

    .language-selector-button {
        display: flex;
        align-items: center;
        gap: 8px;
        
        background: #ffffff00;
        border: 0px solid #ddd;
        border-radius: 4px;
        cursor: pointer;
        font-size: 14px;
        color: #333;
        transition: all 0.3s ease;
    }

    .language-selector-button:hover {
        border-color: #4CAF50;
    }

    .language-selector-button img {
        width: 20px;
        height: 20px;
        border-radius: 50%;
        object-fit: cover;
    }

    .language-selector-dropdown {
        position: absolute;
        top: 100%;
        left: 0;
        margin-top: 5px;
        background: white;
        border: 1px solid #ddd;
        border-radius: 4px;
        box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        min-width: 150px;
        opacity: 0;
        visibility: hidden;
        transform: translateY(-10px);
        transition: all 0.3s ease;
        z-index: 1000;
    }

    .language-selector.active .language-selector-dropdown {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
    }

    .language-option {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 10px 16px;
        cursor: pointer;
        transition: background 0.3s ease;
    }

    .language-option:hover {
        background: #f5f5f5;
    }

    .language-option.active {
        background: #f0f0f0;
        color: #4CAF50;
    }

    .language-option img {
        width: 20px;
        height: 20px;
        border-radius: 50%;
        object-fit: cover;
    }

    /* Add to existing media queries */
    @media screen and (max-width: 768px) {
        .language-selector {
            margin: 10px;
        }

        .language-selector-button {
            padding: 6px 12px;
            font-size: 12px;
        }

        .language-option {
            padding: 8px 12px;
            font-size: 12px;
        }
    }
</style>



<div class="language-selector">
    <div class="language-selector-button">
        <img src="https://flagcdn.com/w40/us.png" alt="Current Language" id="currentLangFlag">
        <span id="currentLangText">English</span>
        <span class="arrow">▼</span>
    </div>
    <div class="language-selector-dropdown">
        <div class="language-option active" data-lang="en" data-flag="us">
            <img src="https://flagcdn.com/w40/us.png" alt="English">
            <span>English</span>
        </div>
        <div class="language-option" data-lang="zh" data-flag="cn">
            <img src="https://flagcdn.com/w40/cn.png" alt="中文">
            <span>中文</span>
        </div>
        <div class="language-option" data-lang="ja" data-flag="jp">
            <img src="https://flagcdn.com/w40/jp.png" alt="日本語">
            <span>日本語</span>
        </div>
      
    </div>
</div>

<script>


    // Language Selector Functionality
    document.addEventListener('DOMContentLoaded', function() {
        const languageSelector = document.querySelector('.language-selector');
        const languageButton = document.querySelector('.language-selector-button');
        const languageOptions = document.querySelectorAll('.language-option');
        const currentLangFlag = document.getElementById('currentLangFlag');
        const currentLangText = document.getElementById('currentLangText');

        // Toggle dropdown
        languageButton.addEventListener('click', (e) => {
            e.stopPropagation();
            languageSelector.classList.toggle('active');
        });

        // Close dropdown when clicking outside
        document.addEventListener('click', (e) => {
            if (!languageSelector.contains(e.target)) {
                languageSelector.classList.remove('active');
            }
        });

        // Handle language selection
        languageOptions.forEach(option => {
            option.addEventListener('click', () => {
                const lang = option.dataset.lang;
                const flag = option.dataset.flag;
                const text = option.querySelector('span').textContent;

                // Update current language display
                currentLangFlag.src = `https://flagcdn.com/w40/${flag}.png`;
                currentLangText.textContent = text;

                // Update active state
                languageOptions.forEach(opt => opt.classList.remove('active'));
                option.classList.add('active');

                // Close dropdown
                languageSelector.classList.remove('active');

                // Here you can add your language change logic
                console.log(`Language changed to: ${lang}`);
                
                // Example: You could trigger a language change event
                // document.dispatchEvent(new CustomEvent('languageChanged', { detail: { lang } }));
            });
        });

        // Handle keyboard navigation
        languageButton.addEventListener('keydown', (e) => {
            if (e.key === 'Enter' || e.key === ' ') {
                e.preventDefault();
                languageSelector.classList.toggle('active');
            }
        });

        languageOptions.forEach(option => {
            option.addEventListener('keydown', (e) => {
                if (e.key === 'Enter' || e.key === ' ') {
                    e.preventDefault();
                    option.click();
                }
            });
        });
    });
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你热爱好热啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值