免费代码资源 共享平台

专注分享高质量、可复用的代码片段,帮助开发者快速实现功能,提升开发效率

精选代码资源

探索我们精心整理的各类代码资源,从基础组件到完整项目,满足你的各种开发需求

PHP代码示例

数据库连接类

安全高效的PDO数据库连接封装

class Database {
    private $conn;
    
    public function __construct($host, $dbname, $username, $password) {
        try {
            $this->conn = new PDO(
                "mysql:host=$host;dbname=$dbname;charset=utf8",
                $username,
                $password,
                [
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
                ]
            );
        } catch(PDOException $e) {
            die("数据库连接失败: " . $e->getMessage());
        }
    }
    
    public function getConnection() {
        return $this->conn;
    }
}

文件上传处理

安全的文件上传类,支持多文件上传

class FileUploader {
    private $uploadDir = 'uploads/';
    private $maxSize = 5 * 1024 * 1024; // 5MB
    private $allowedTypes = ['jpg', 'jpeg', 'png', 'gif', 'pdf'];
    
    public function upload($fileInputName) {
        if (!isset($_FILES[$fileInputName])) {
            return ['error' => '没有选择文件'];
        }
        
        $file = $_FILES[$fileInputName];
        
        if ($file['error'] !== UPLOAD_ERR_OK) {
            return ['error' => '文件上传失败: ' . $this->getErrorMessage($file['error'])];
        }
        
        // 其他处理逻辑...
    }
    
    // 其他方法...
}

HTML代码示例

响应式导航栏

现代美观的响应式网站导航栏

<nav class="bg-white shadow-md">
    <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
        <div class="flex justify-between h-16">
            <div class="flex items-center">
                <a href="#" class="flex-shrink-0 font-bold text-xl text-primary">
                    Logo
                </a>
                <div class="hidden md:ml-10 md:flex md:space-x-8">
                    <a href="#" class="text-gray-900 hover:text-primary px-3 py-2 font-medium">首页</a>
                    <a href="#" class="text-gray-500 hover:text-primary px-3 py-2 font-medium">服务</a>
                    <a href="#" class="text-gray-500 hover:text-primary px-3 py-2 font-medium">作品</a>
                    <a href="#" class="text-gray-500 hover:text-primary px-3 py-2 font-medium">关于</a>
                </div>
            </div>
            <div class="flex items-center">
                <button class="bg-primary text-white px-4 py-2 rounded-md">
                    联系我们
                </button>
            </div>
        </div>
    </div>
</nav>

表单验证示例

包含完整验证逻辑的HTML表单

<form id="contactForm">
    <div class="mb-4">
        <label for="name" class="block text-gray-700 font-medium mb-2">姓名</label>
        <input type="text" id="name" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-primary" required>
        <span class="error-message text-red-500 text-sm hidden">请输入您的姓名</span>
    </div>
    
    <div class="mb-4">
        <label for="email" class="block text-gray-700 font-medium mb-2">邮箱</label>
        <input type="email" id="email" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-primary" required>
        <span class="error-message text-red-500 text-sm hidden">请输入有效的邮箱地址</span>
    </div>
    
    <button type="submit" class="bg-primary text-white px-4 py-2 rounded-md">
        提交
    </button>
</form>

CSS代码示例

卡片悬停效果

现代感十足的卡片悬停动画效果

.card {
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    padding: 20px;
    transition: all 0.3s ease;
}

.card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}

.card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(135deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.1) 100%);
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 1;
}

.card:hover::before {
    opacity: 1;
}

响应式网格布局

使用CSS Grid实现的响应式布局

.grid-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
    padding: 20px;
}

.grid-item {
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    padding: 20px;
}

/* 小屏幕设备 */
@media (max-width: 640px) {
    .grid-container {
        grid-template-columns: 1fr;
    }
}

/* 中等屏幕设备 */
@media (min-width: 641px) and (max-width: 1024px) {
    .grid-container {
        grid-template-columns: repeat(2, 1fr);
    }
}

JavaScript代码示例

AJAX数据请求

使用Fetch API实现的AJAX请求封装

class ApiClient {
    constructor(baseUrl) {
        this.baseUrl = baseUrl;
    }
    
    async get(endpoint, params = {}) {
        const queryString = new URLSearchParams(params).toString();
        const url = `${this.baseUrl}/${endpoint}?${queryString}`;
        
        try {
            const response = await fetch(url, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json'
                }
            });
            
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
            
            return await response.json();
        } catch (error) {
            console.error('Fetch error:', error);
            throw error;
        }
    }
    
    // 其他HTTP方法...
}

表单验证

前端表单验证工具类

class FormValidator {
    constructor(formId) {
        this.form = document.getElementById(formId);
        this.errors = {};
    }
    
    validate() {
        this.errors = {};
        const inputs = this.form.querySelectorAll('input, select, textarea');
        
        inputs.forEach(input => {
            const rules = input.dataset.rules;
            if (!rules) return;
            
            const rulesList = rules.split('|');
            rulesList.forEach(rule => {
                const [ruleName, ruleValue] = rule.split(':');
                
                switch (ruleName) {
                    case 'required':
                        if (!input.value.trim()) {
                            this.addError(input, '此字段为必填项');
                        }
                        break;
                        
                    case 'email':
                        const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
                        if (input.value && !emailRegex.test(input.value)) {
                            this.addError(input, '请输入有效的邮箱地址');
                        }
                        break;
                        
                    // 其他验证规则...
                }
            });
        });
        
        return Object.keys(this.errors).length === 0;
    }
    
    // 其他方法...
}

加入我们的资源分享社区

与数千名开发者一起分享、学习和成长,让开发变得更加简单高效