React.js (5) Оформление. React + CSS - Hallo sahabat Dev-Create, Pada Artikel yang anda baca kali ini dengan judul React.js (5) Оформление. React + CSS, kami telah mempersiapkan artikel ini dengan baik untuk anda baca dan ambil informasi didalamnya. mudah-mudahan isi postingan
Artikel Babel,
Artikel bootstrap,
Artikel ES6,
Artikel javascript,
Artikel npm,
Artikel React.js,
Artikel Webpack,
Artikel Теория программирования, yang kami tulis ini dapat anda pahami. baiklah, selamat membaca.
Judul : React.js (5) Оформление. React + CSS
link : React.js (5) Оформление. React + CSS
Anda sekarang membaca artikel React.js (5) Оформление. React + CSS dengan alamat link https://dev-create.blogspot.com/2018/05/reactjs-5-react-css.html
Judul : React.js (5) Оформление. React + CSS
link : React.js (5) Оформление. React + CSS
React.js (5) Оформление. React + CSS
Пришло время сделать наше приложение более привлекательным. Для этого давайте научимся работать со стилями в React.js
Все статьи по React.js
Для того, чтобы стилизовать React.js приложение существует огромное количество подходов, библиотек, разнообразных стилизованных компонентов. Мы возьмем самый популярный фреймворк - Bootstrap. Даже когда вы принимаете решение использовать Bootstrap, вы можете легко найти в Гугл множество библиотек, которые интегрировали в себя Bootstrap и дают вам возможность использовать уже готовые стилизованные компоненты. Вы можете выбрать для себя любую из них. Этих библиотек огромное количество.
Мы пойдем классическим путем и будем использовать чистый (классический) css от Bootstrap.
Для этого идем в консоль и устанавливаем с помощью npm сам bootstrap
npm - установит нам библиотеку и теперь мы сможем подключать стили. Для того, чтобы не тянуть стили руками в какой-либо html файл, мы можем подключать в наш проект css стили, как модули.
Это нам позволит сделать webpack, у которого для этого есть специальные возможности (модули), которые позволят подключать стили css в наш проект.
Для этого достаточно в файле App.js написать
В нашем случае это
Подключать файл bootstrap.min.css не имеет смысла, поскольку перед продакшн вы будете все равно минимизировать файлы с помощью webpack.
App.js
Теперь мы можем использовать bootstrap в нашем проекте.
Для того, чтобы дать класс какому-либо элементу нам достаточно написать
Например, пометить весь код в контейнер - в файле App.js первому тегу
Убедиться, что все работает, вы можете открыв браузер и "исследовав элемент"
Класс добавился. И стили bootstrap прменились к нашим элементам.
Теперь давайте оформим каждый элемент.
Завернем наш header в
Результат:
Теперь, перейдет к оформлению статей.
В файле Article.jsмы добавим стили сразу на всю статью в
Заголовок поместим в header -
Article.js
Посмотрим:
Немного изменим тело самой статьи и кнопку.
В файле Article.js
Результат:
Для того. чтобы дать инлайновый стиль какому-либо элементу, достаточно прописать property style и в двойных фигурных скобках прописать свойство и значение.
Никакой магии в этом нет. Просто одни фигурные скобки говорят о том, что мы используем javascript переменную (выражение, или что-то еще), а вторые скобки говорят, что внутри обычная литеральная нотация.
Например так:
В принципе, мы могли бы вынести это таким вот образом -
а уже в самом теге оставить только
Можно писать и так и так.
То, что получилось:
Для того, чтобы позиционировать нашу статью по центру добавим:
Теперь нам остается убрать маркер списка.
Для этого мы напишем в файле ArticleList.js специальный стиль для тега
Нам придется создать отдельный css- файл для нашего ArticleList.js и в таких случаях, чтобы не создавать путаницу в общей папке компонентов, лучше создать для такого компонента отдельную папку!
В файл index.js мы вставим весь код из нашего ArticleList.js, только поправим пути:
index.js
и здесь же создадим файл style.css -здесь будут стили данного компонента.
Файл ArticleList.js удаляем.
При этом webpack поймет, что в App.js ->ArticleList - это папка, и коль в ней есть файл index.js, то он возьмет именно этот файл. Поэтому файл index.js не нужно отдельно указывать в этом пути (т.е делать так - >
App.js
Теперь добавим стили компоненту в файле style.css
Лучше всего себя показала методология БЭМ (сайт в России с vpn - отдельное спасибо РосКомНадзору) Блок Элемент Модификатор от Яндекса. Вы можете с ней ознакомиться. Мы пока что запишем:
style.css
Теперь, для того, чтобы воспользоваться этими стилями. нам необходимо сделать импорт. Мы сделаем это на уровне нашего компонента в файле index.js
Теперь каждый раз, когда кто-то захочет подключать наш компонент, он будет его подключать вместе с соответствующими стилями.
Нам остается только добавить класс
Сохраняем, и... Не пугайесь. Ваш компилятор может сломаться и получите такое предупреждение, вместо приложения.
Это происходит, потому что webpack ожидал файл ArticleList.js, а теперь он живет в папке.
Чтобы это исправить, достаточно перезапустить сервер -> Ctrl + C
Для того. чтобы он собрал уже все с index.js Таким образом, мы с вами подключили Bootstrap к нашему React-приложению, научились добавлять стили инлайн двумя способами и научились подключать стили непосредственно к React - компонентам. сделав их по настоящему независимыми "строительными блоками" React - приложения.
Все статьи по React.js
components/App.js
components/Article.js
components/ArticleList/index.js
components/ArticleList/style.css
Все статьи по React.js
Для того, чтобы стилизовать React.js приложение существует огромное количество подходов, библиотек, разнообразных стилизованных компонентов. Мы возьмем самый популярный фреймворк - Bootstrap. Даже когда вы принимаете решение использовать Bootstrap, вы можете легко найти в Гугл множество библиотек, которые интегрировали в себя Bootstrap и дают вам возможность использовать уже готовые стилизованные компоненты. Вы можете выбрать для себя любую из них. Этих библиотек огромное количество.
Мы пойдем классическим путем и будем использовать чистый (классический) css от Bootstrap.
Подключение Bootstrap.
Для этого идем в консоль и устанавливаем с помощью npm сам bootstrap
npm install bootstrap
npm - установит нам библиотеку и теперь мы сможем подключать стили. Для того, чтобы не тянуть стили руками в какой-либо html файл, мы можем подключать в наш проект css стили, как модули.
Это нам позволит сделать webpack, у которого для этого есть специальные возможности (модули), которые позволят подключать стили css в наш проект.
Для этого достаточно в файле App.js написать
import
и какой именно css модуль мы хотим подключить. В нашем случае это
'bootstrap'
. Обратите внимание, что подключаем без всяких слешей, потому что webpack и так поймет, что этот модуль стоит искать в папке -> node_modules. Указываем путь к файлу bootstrap.css. Подключать файл bootstrap.min.css не имеет смысла, поскольку перед продакшн вы будете все равно минимизировать файлы с помощью webpack.
App.js
import React from 'react'
import ArticleList from './ArticleList'
import articles from '../fixtures.js'
import 'bootstrap/dist/css/bootstrap.css'
function App() {
return (
<div>
<h1>App Name</h1>
<ArticleList articles={articles}/>
</div>
);
}
export default App
Теперь мы можем использовать bootstrap в нашем проекте.
Для того, чтобы дать класс какому-либо элементу нам достаточно написать
className = "имя класса"
Например, пометить весь код в контейнер - в файле App.js первому тегу
div
добавили -
<div className="container" >
Убедиться, что все работает, вы можете открыв браузер и "исследовав элемент"
Класс добавился. И стили bootstrap прменились к нашим элементам.
Теперь давайте оформим каждый элемент.
Завернем наш header в
div
классом jumbotron
, а самому заголовку дадим класс display-3
import React from 'react'
import ArticleList from './ArticleList'
import articles from '../fixtures.js'
import 'bootstrap/dist/css/bootstrap.css'
function App() {
return (
<div className="container">
<div className="jumbotron">
<h1 className="display-3">App Name</h1>
</div>
<ArticleList articles={articles}/>
</div>
);
}
export default App
Результат:
Теперь, перейдет к оформлению статей.
В файле Article.jsмы добавим стили сразу на всю статью в
className="card"
. Заголовок поместим в header -
div className="card-header"
, а сам текст статьи и дату в отдельный div className="card-header"
. Тело статьи в div className="card-body"
, Article.js
import React, {Component} from 'react'
class Article extends Component {
state = {
isOpen: true
}
render() {
const {article} = this.props
const body = this.state.isOpen && <section>{ article.text }</section>
return(
<div className="card">
<div className="card-header">
<h2>
{ article.title }
<button onClick={this.handleClick}>
{this.state.isOpen ? 'close' : 'open'}
</button>
</h2>
</div>
<div className="card-body">
{ body }
<h3>
"creation date : "{ (new Date(article.date)).toDateString()}
</h3>
</div>
</div>
);
}
handleClick = () =>{
console.log('---', 'clicked')
this.setState({
isOpen: !this.state.isOpen
})
}
}
export default Article
Посмотрим:
Немного изменим тело самой статьи и кнопку.
В файле Article.js
import React, {Component} from 'react'
class Article extends Component {
state = {
isOpen: true
}
render() {
const {article} = this.props
const body = this.state.isOpen && <section className="card-text">{ article.text }</section>
return(
<div className="card">
<div className="card-header">
<h2>
{ article.title }
<button onClick={this.handleClick} className="btn btn-primary btn-lg float-right">
{this.state.isOpen ? 'close' : 'open'}
</button>
</h2>
</div>
<div className="card-body">
<h6 className="card-subtitle text-muted">
"creation date : "{ (new Date(article.date)).toDateString()}
</h6>
{ body }
</div>
</div>
);
}
handleClick = () =>{
console.log('---', 'clicked')
this.setState({
isOpen: !this.state.isOpen
})
}
}
export default Article
Результат:
Делаем статью на пол экрана и работаем с инлайновыми стилями.
Для того. чтобы дать инлайновый стиль какому-либо элементу, достаточно прописать property style и в двойных фигурных скобках прописать свойство и значение.
Никакой магии в этом нет. Просто одни фигурные скобки говорят о том, что мы используем javascript переменную (выражение, или что-то еще), а вторые скобки говорят, что внутри обычная литеральная нотация.
Например так:
<div className="card" style={{width:'50%'}}>
В принципе, мы могли бы вынести это таким вот образом -
const style = {width: '50%'}
а уже в самом теге оставить только
<div className="card" style={style}>
Можно писать и так и так.
import React, {Component} from 'react'
class Article extends Component {
state = {
isOpen: true
}
render() {
const {article} = this.props
const style = {width:'50%'}
const body = this.state.isOpen && <section className="card-text">{ article.text }</section>
return(
<div className="card" style={style}>
<div className="card-header">
<h2>
{ article.title }
<button onClick={this.handleClick} className="btn btn-primary btn-lg float-right">
{this.state.isOpen ? 'close' : 'open'}
</button>
</h2>
</div>
<div className="card-body">
<h6 className="card-subtitle text-muted">
"creation date : "{ (new Date(article.date)).toDateString()}
</h6>
{ body }
</div>
</div>
);
}
handleClick = () =>{
console.log('---', 'clicked')
this.setState({
isOpen: !this.state.isOpen
})
}
}
export default Article
То, что получилось:
Для того, чтобы позиционировать нашу статью по центру добавим:
mx-auto
элементу .card
<div className="card mx-auto" style={style}>
Теперь нам остается убрать маркер списка.
Для этого мы напишем в файле ArticleList.js специальный стиль для тега
li
, а за одно научимся создавать собственные css-модули. Нам придется создать отдельный css- файл для нашего ArticleList.js и в таких случаях, чтобы не создавать путаницу в общей папке компонентов, лучше создать для такого компонента отдельную папку!
Подключением файла стилей React - компоненту.
В папке components мы создадим отдельную папку -> ArticleList внутри которой мы будем держать реактовский код index.js, так и стили ArticleList.jsВ файл index.js мы вставим весь код из нашего ArticleList.js, только поправим пути:
index.js
import React from 'react'
import Article from '../Article'
import './style.css'
export default function ArticleList({articles}) {
const articleElements = articles.map(article =>
<li key = {article.id} className="article-list__li">
<Article article = {article}/>
</li>
)
return(
<ul>
{articleElements}
</ul>
);
}
и здесь же создадим файл style.css -здесь будут стили данного компонента.
Файл ArticleList.js удаляем.
При этом webpack поймет, что в App.js ->ArticleList - это папка, и коль в ней есть файл index.js, то он возьмет именно этот файл. Поэтому файл index.js не нужно отдельно указывать в этом пути (т.е делать так - >
import ArticleList from './ArticleList/index.js'
) App.js
import React from 'react'
import ArticleList from './ArticleList'
import articles from '../fixtures.js'
import 'bootstrap/dist/css/bootstrap.css'
function App() {
return (
<div className="container">
<div className="jumbotron">
<h1 className="display-3">App Name</h1>
</div>
<ArticleList articles={articles}/>
</div>
);
}
export default App
Теперь добавим стили компоненту в файле style.css
Лучше всего себя показала методология БЭМ (сайт в России с vpn - отдельное спасибо РосКомНадзору) Блок Элемент Модификатор от Яндекса. Вы можете с ней ознакомиться. Мы пока что запишем:
style.css
.article-list__li {
list-style: none;
}
Теперь, для того, чтобы воспользоваться этими стилями. нам необходимо сделать импорт. Мы сделаем это на уровне нашего компонента в файле index.js
import './style.css'
Теперь каждый раз, когда кто-то захочет подключать наш компонент, он будет его подключать вместе с соответствующими стилями.
Нам остается только добавить класс
className="article-list__li"
к тегу li
Сохраняем, и... Не пугайесь. Ваш компилятор может сломаться и получите такое предупреждение, вместо приложения.
Это происходит, потому что webpack ожидал файл ArticleList.js, а теперь он живет в папке.
Чтобы это исправить, достаточно перезапустить сервер -> Ctrl + C
npm start
Для того. чтобы он собрал уже все с index.js Таким образом, мы с вами подключили Bootstrap к нашему React-приложению, научились добавлять стили инлайн двумя способами и научились подключать стили непосредственно к React - компонентам. сделав их по настоящему независимыми "строительными блоками" React - приложения.
Все статьи по React.js
Файлы, которые мы изменяли в этот раз:
components/App.js
import React from 'react'
import ArticleList from './ArticleList'
import articles from '../fixtures.js'
import 'bootstrap/dist/css/bootstrap.css'
function App() {
return (
<div className="container">
<div className="jumbotron">
<h1 className="display-3">App Name</h1>
</div>
<ArticleList articles={articles}/>
</div>
);
}
export default App
components/Article.js
import React, {Component} from 'react'
class Article extends Component {
state = {
isOpen: true
}
render() {
const {article} = this.props
const style = {width:'50%'}
const body = this.state.isOpen && <section className="card-text">{ article.text }</section>
return(
<div className="card mx-auto" style={style}>
<div className="card-header">
<h2>
{ article.title }
<button onClick={this.handleClick} className="btn btn-primary btn-lg float-right">
{this.state.isOpen ? 'close' : 'open'}
</button>
</h2>
</div>
<div className="card-body">
<h6 className="card-subtitle text-muted">
"creation date : "{ (new Date(article.date)).toDateString()}
</h6>
{ body }
</div>
</div>
);
}
handleClick = () =>{
console.log('---', 'clicked')
this.setState({
isOpen: !this.state.isOpen
})
}
}
export default Article
components/ArticleList/index.js
import React from 'react'
import Article from '../Article'
import './style.css'
export default function ArticleList({articles}) {
const articleElements = articles.map(article =>
<li key = {article.id} className="article-list__li">
<Article article = {article}/>
</li>
)
return(
<ul>
{articleElements}
</ul>
);
}
components/ArticleList/style.css
.article-list__li {
list-style: none;
}
Demikianlah Artikel React.js (5) Оформление. React + CSS
Sekianlah artikel React.js (5) Оформление. React + CSS kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.
Anda sekarang membaca artikel React.js (5) Оформление. React + CSS dengan alamat link https://dev-create.blogspot.com/2018/05/reactjs-5-react-css.html