广告
返回顶部
首页 > 资讯 > 精选 >js类库styled-components入门实例分析
  • 838
分享到

js类库styled-components入门实例分析

2023-07-02 12:07:52 838人浏览 泡泡鱼
摘要

这篇文章主要介绍“js类库styled-components入门实例分析”,在日常操作中,相信很多人在js类库styled-components入门实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js类

这篇文章主要介绍“js类库styled-components入门实例分析”,在日常操作中,相信很多人在js类库styled-components入门实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js类库styled-components入门实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    styled-components 是什么?

    styled-components 是一个常用的 CSS in js 类库。和所有同类型的类库一样,通过 js 赋能解决了原生 css 所不具备的能力,比如变量、循环、函数等。

    相对于其他预处理有什么优点?

    • 诸如 sass&less 等预处理可以解决部分 css 的局限性,但还是要学习新的语法,而且需要对其编译,其复杂的 webpack 配置也总是让开发者抵触。

    • 如果有过sass&less的经验,也能很快的切换到styled-components,因为大部分语法都类似,比如嵌套,& 继承等, styled-componens 很好的解决了学习成本与开发环境问题,很适合 React 技术栈 && React Native 的项目开发。

    解决了什么问题?

    • className 的写法会让原本写css的写法十分难以接受

    • 如果通过导入css的方式 会导致变量泄露成为全局 需要配置WEBpack让其模块化

    • 以及上面提到的解决了原生 css 所不具备的能力,能够加速项目的快速开发

    安装

    npm install --save styled-components

    编辑器智能提示

    2018-06-11更新

    最基础的使用

    import styled from 'styled-components'const Title = styled.h2`    font-size: 1.5em;    text-align: center;    color: palevioletred;`;// 相当于  const Title = styled.h2(xx)const Wrapper = styled.section`    padding: 4em;    background: papayawhip;`;    render () {        return (            <Wrapper>                <Title>Hello styled-components</Title>            </Wrapper>        )    }

    此时我们可以看到控制台中输出了一个随机的className,这是styled-components帮我们完成的. 注意: 组件名要以大些开头 不然会被解析成普通标签

    传递props

    const Button = styled.button`    background: ${props => props.primary ? 'palevioletred' : 'white'};    color: ${props => props.primary ? 'white' : 'palevioletred'};    font-size: 1em;    margin: 1em;    padding: 0.25em 1em;    border: 2px solid palevioletred;    border-radius: 3px;`render(    <div>        <Button>Normal</Button>        <Button primary>Primary</Button>    </div>);

    在组件传递的props都可以在定义组件时获取到,这样就很容易实现定制某些风格组件

    props高级用法

    设置默认值,在未设定必须传值的情况下我们会给一个默认值(defaultProps)

    export default class ALbum extends React.Component {    constructor (props) {        super(props)        this.state = {            // 接收传递的值            imgSrc: props.imgSrc        }    }    render () {        const {imgSrc} = this.state        return (            <Container imgSrc={imgSrc}>            </Container>        )    }}// 在这里是可以拿到props的 const Container = styled.div`    background-size: cover;    background-image: url(${props =>  props.imgSrc});    width: 100%;        height: 300px;`// 当然没传值也没关系  我们设置默认值Container.defaultProps = {    imgSrc: Cover}

    塑造组件

    这个非常有用 你可能会遇到一些原本就已经是组件了 但是你要为他添加一些样式,这时候该怎么办呢 ?

    // 传递className 在react-native 中要使用 styleconst Link = ({className , children}) => (    <a className={className}>        {children}    </a>)const StyledLink = styled(Link)`    color: palevioletred;`render(    <div>        <Link>普通组件</Link>        <StyledLink>有颜色吗?</StyledLink>    </div>);

    组件样式继承

    const Button = styled.button`    color: palevioletred;    font-size: 1em;    margin: 1em;    padding: 0.25em 1em;    border: 2px solid palevioletred;    border-radius: 3px;`;const TomatoButton = Button.extend`    color: tomato;    border-color: tomato;`;// TomatoButton 部分样式继承自 Button 这种情况下不会生成两个class

    改变组件标签

    在闲的蛋疼的情况下 我们想要改变组件的标签 比如把 button 变成 a 标签

    // 利用上面定义的 Button 组件 调用 withComponent 方法const Link = Button.withComponent('a')

    维护其他属性

    在某种情况下,我们可能需要用到第三方库样式,我们可以使用这个方法轻松达到

    const Input = styled.input.attrs({    // 定义静态 props    type: 'passWord',    // 没传默认使用 1em    margin: props => props.size || '1em',    padding: props => props.size || '1em'})`    color: palevioletred;    font-size: 1em;    border: 2px solid palevioletred;    border-radius: 3px;    // 动态计算props    margin: ${props => props.margin};    padding: ${props => props.padding}`render ( <Input size='1em'></Input>  <Input size='2em'></Input> )

    动画

    动画会生成一个随机类名 而不会污染到全局

    import { keyframes } from 'styled-components'// CSS 动画const rotate360 = keyframes`    from {        transform: rotate(0);    }    to {        transform: rotate(360deg);    }`const Rotate = Button.extend`    animation: ${rotate360} 2s linear infinite;`render ( <Rotate>  ????  </Rotate> )

    到此,关于“js类库styled-components入门实例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: js类库styled-components入门实例分析

    本文链接: https://www.lsjlt.com/news/341943.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • js类库styled-components入门实例分析
      这篇文章主要介绍“js类库styled-components入门实例分析”,在日常操作中,相信很多人在js类库styled-components入门实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js类...
      99+
      2023-07-02
    • js类库styled-components快速入门教程
      目录styled-components 是什么?相对于其他预处理有什么优点?解决了什么问题?安装最基础的使用传递propsprops高级用法塑造组件组件样式继承改变组件标签维护其他属...
      99+
      2022-11-13
    • HTML入门实例分析
      这篇文章主要介绍“HTML入门实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML入门实例分析”文章能帮助大家解决问题。 HTML是英文Hyper Te...
      99+
      2022-10-19
    • SpringMVC入门实例分析
      今天小编给大家分享一下SpringMVC入门实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
      99+
      2022-10-19
    • Elasticsearch入门实例分析
      这篇文章主要介绍“Elasticsearch入门实例分析”,在日常操作中,相信很多人在Elasticsearch入门实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Elasticsearch入门实例分析...
      99+
      2023-06-05
    • Python数据类型入门实例代码分析
      本文小编为大家详细介绍“Python数据类型入门实例代码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python数据类型入门实例代码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学...
      99+
      2022-10-19
    • flash away3D入门实例分析
      本文小编为大家详细介绍“flash away3D入门实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“flash away3D入门实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学...
      99+
      2022-10-19
    • CTF AWD入门实例分析
      这篇文章主要介绍了CTF AWD入门实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CTF AWD入门实例分析文章都会有所收获,下面我们一起来看看吧。引文AWD赛制是一种网络安全竞赛的...
      99+
      2023-07-04
    • Docker入门安装实例分析
      本文小编为大家详细介绍“Docker入门安装实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Docker入门安装实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。do...
      99+
      2022-10-19
    • javascript入门实例代码分析
      这篇文章主要介绍“javascript入门实例代码分析”,在日常操作中,相信很多人在javascript入门实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java...
      99+
      2022-10-19
    • 容器Docker入门实例分析
      这篇文章主要讲解了“容器Docker入门实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“容器Docker入门实例分析”吧!一、概述1.1 基本概念:d...
      99+
      2022-10-19
    • python入门代码实例分析
      这篇文章主要介绍“python入门代码实例分析”,在日常操作中,相信很多人在python入门代码实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python入门代码实例...
      99+
      2022-10-19
    • JUnit5基础入门实例分析
      这篇“JUnit5基础入门实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JUnit5基础入门实例分析”文章吧。设计哲...
      99+
      2023-06-17
    • Vue新手入门实例分析
      本篇内容介绍了“Vue新手入门实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! Vue实例和模板语法<body>...
      99+
      2023-06-27
    • Java入门数组实例分析
      今天小编给大家分享一下Java入门数组实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。认识数组数组的定义数组是相同类型...
      99+
      2023-06-30
    • Rollup入门实例代码分析
      这篇文章主要介绍了Rollup入门实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Rollup入门实例代码分析文章都会有所收获,下面我们一起来看看吧。Rollup介绍及使用1、Rollup 概述仅仅是...
      99+
      2023-07-05
    • Blender Python编程入门实例分析
      Blender Python 编程支持的特性:编辑用户界面可以编辑的任何数据(场景,网格,粒子等)。修改用户首选项、键映射和主题。使用自己的设置运行工具。创建用户界面元素,如菜单、标题和面板。创建新的工具。创建交互式工具。创建与 Blend...
      99+
      2023-05-14
      Python blender
    • C# Marshal类基本概念和入门实例代码分析
      本文小编为大家详细介绍“C# Marshal类基本概念和入门实例代码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C# Marshal类基本概念和入门实例代码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
      99+
      2023-07-05
    • 数据分析入门——Pandas类库基础知识
      使用python进行数据分析时,经常会用Pandas类库处理数据,将数据转换成我们需要的格式。Pandas中的有两个数据结构和处理数据相关,分别是Series和DataFrame。 Series Series是一种类似于一维数组的对象,它...
      99+
      2023-01-31
      基础知识 类库 入门
    • Java泛型使用入门实例分析
      本文小编为大家详细介绍“Java泛型使用入门实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java泛型使用入门实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、什么是泛型泛型其实就是将类型作为参...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作