当前位置: 首页 > article >正文

nodejs 013:Prect 样式复用(multiple classes)例子

Prect 简单示例

  • Prect 为使用相同的现代 API 的快速 3kB React 替代方案。代码形式与 React 基本相同。部分语法区别可见 prect-differences-to-react。以下是一个 Prect 简单示例。

Button目录Button.css:

.this {
    display: inline-block;
    padding: 3px 8px;
    margin-bottom: 0;
    font-size: 0.9rem;
    line-height: 1.4;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    cursor: default;
    background-image: none;
    border: 1px solid transparent;
    border-radius: var(--radius-size);
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
    -webkit-app-region: no-drag;
    cursor: pointer;
}

.this:focus {
    outline: none;
    box-shadow: none;
}

Button目录index.jsx:

import { h } from 'preact';
import styles from './Button.css'; // CSS Modules模块化,需要打包工具支持,比如webpack在style-loader配置

const Button = ({
    className,
    children,
    type = 'default',
    ...props
}) => (
    <button
        // CSS Modules模块化,需要打包工具支持,比如webpack在style-loader配置
        className={${styles.this} ${styles[type]} ${className ? className : ''}}
        {...props}
    >
        { children }
    </button>
);

export default Button;

src使用的例子index.jsx

import { h, Component, render } from 'preact';
import Button from '../Button';

class App extends Component { 
    render() { 
        return (
            <div>
                <h1>欢迎使用按钮组件</h1>
                <Button children={'点击我'}
                />
            </div>
        );
    }
}

render(<App />,document.querySelector('#root'))

prect 中multiple classes样式管理

  • 前端的"multiple classes" 通常指的是在 HTML 元素中同时应用多个 CSS 类。类似<div class="class1 class2 class3">内容</div>
    这样做的主要目的是为了更好地管理样式,提高代码的可复用性和可维护性。
  1. 样式复用:通过将多个类组合在一起,可以灵活地复用已有的样式。例如,你可以有一个基础样式类和一个特定样式类:

    <div class="box primary">内容</div>
    

    在这个例子中,box 是基础样式,而 primary 可能是特定的颜色或背景。

  2. 响应式设计:可以为不同的屏幕尺寸或状态应用不同的类。例如:

    <button class="btn large hidden-on-mobile">点击我</button>
    

    这里 largehidden-on-mobile 可以分别控制按钮的大小和在移动设备上的可见性。

  3. 状态管理:当元素的状态发生变化时,可以通过添加或移除类来改变样式。例如,添加 active 类表示按钮被点击:

    button.classList.add('active');
    

Button目录Button.css:

.this {
    display: inline-block;
    padding: 3px 80px;
    margin-bottom: 0;
    font-size: 0.9rem;
    line-height: 1.4;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    cursor: default;
    background-image: none;
    border: 1px solid transparent;
    border-radius: var(--radius-size);
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
    -webkit-app-region: no-drag;
    cursor: pointer;
    
}

.this:focus {
    outline: none;
    box-shadow: none;
}


.default {
    color: #123eed;
    border-top-color: #c2c0c2;
    border-right-color: #c2c0c2;
    border-bottom-color: #a19fa1;
    border-left-color: #c2c0c2;
    background-color: #fcfcfc;
    
    background-image: linear-gradient(to bottom, #fcfcfc 0%, #f1f1f1 100%);
}

.default:active {
    /* background-color: #ddd; */
    background-color: #20B2AA; /* 蓝绿色 */
    background-image: none;
}

Button目录index.jsx:

import { h } from 'preact';
import './Button.css';

const Button = ({
    className,
    text,
    ...props
}) => (
    <button
        className={`this ${className || ''}`}
    >
       { text}
    </button>
);

export default Button;

src使用的例子index.jsx

import { h, Component, render } from 'preact';
import Button from '../Button';

class App extends Component { 
       state = {
        Text: "WORLD",
    };  

    render() { 
        return (
            <div>
                <h1>欢迎使用按钮组件</h1>
                <Button text={'HELLO WORLD'} className={'default'}/>
            </div>
        );
    }
}

render(<App />,document.querySelector('#root'))

效果

在这里插入图片描述

CG

  • 注:React 组件以大写字母开头,而 HTML 标签则必须是小写字母。

http://www.kler.cn/a/313652.html

相关文章:

  • 贪心算法入门(二)
  • 读数据质量管理:数据可靠性与数据质量问题解决之道03数据目录
  • 实现一个BLE HID鼠标
  • stringUtils详细解释
  • 记录学习react的一些内容
  • 【学习】【HTML】HTML、XML、XHTML
  • yolo自动化项目实例解析(二)ui页面整理 1.78
  • macOS Sequoia 正式版(24A335)黑苹果/Mac/虚拟机系统镜像
  • 2024华为杯E题:高速公路应急车道紧急启用模型
  • Broadcast:Android中实现组件及进程间通信
  • 使用 Anaconda 环境在Jupyter和PyCharm 中进行开发
  • 【计算机网络】网络层协议解析
  • NVM(node.js版本工具)的使用
  • 虚拟机ens33网卡不显示inet地址(已设置NOBOOT为yes)
  • 蓝桥杯2024省C
  • IDEA 2024.3 EAP新特征早览!
  • 音视频入门基础:AAC专题(4)——ADTS格式的AAC裸流实例分析
  • 微信小程序05-常用API下
  • EmguCV学习笔记 VB.Net 12.2 WeChatQRCode
  • 【FPGA】编程方式
  • Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
  • AUTOSAR_EXP_ARAComAPI的5章笔记(7)
  • iPhone 16系列:摄影艺术的全新演绎,探索影像新境界
  • Java面试篇基础部分-Java语言中的锁有哪些?
  • 基于SpringBoot+Vue的图书管理系统
  • 【设计模式-备忘录】