SlideShare a Scribd company logo
1 of 60
Download to read offline
Object-Oriented CSS
從 OOCSS, SMACSS, BEM 到 AMCSS
Benson Lu
Benson Lu
Front-End Engineer
Wantrepreneur
– http://cssguidelin.es/
Harry Roberts
CSS is not a pretty language.
While it is simple to learn and get started with, it soon
becomes problematic at any reasonable scale.
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
<div class=”widget”>
Featured Items
</div>
#sidebar
.widget {
background: yellow;
border: 1px solid black;
color: black;
width: 50%;
padding: 7px;
}
COMMON MISTAKES
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
<div class=”widget”>
Featured Items
</div>
<div id=”sidebar”>
<div class=”widget”>
Featured Items
</div>
</div>
#sidebar
.widget {
background: yellow;
border: 1px solid black;
color: black;
width: 50%;
padding: 7px;
}
COMMON MISTAKES
COMMON MISTAKES
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
#sidebar
.widget {
background: yellow;
border: 1px solid black;
color: black;
width: 50%;
padding: 7px;
}
#sidebar .widget {
width: 200px;
}
<div class=”widget”>
Featured Items
</div>
<div id=”sidebar”>
<div class=”widget”>
Featured Items
</div>
</div>
COMMON MISTAKES
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
<div class=”widget”>
Featured Items
</div>
<div id=”sidebar”>
<div class=”widget”>
Featured Items
</div>
</div>
.widget {
background: yellow;
border: 1px solid black;
color: black;
width: 50%;
padding: 7px;
}
#sidebar .widget {
width: 200px;
}
home
COMMON MISTAKES
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
<div class=”widget”>
Featured Items
</div>
<div id=”sidebar”>
<div class=”widget”>
Featured Items
</div>
</div>
.widget {
background: yellow;
border: 1px solid black;
color: black;
width: 50%;
padding: 7px;
}
#sidebar .widget {
width: 200px;
}
body.homepage .widget {
backgorund: white;
}
home
COMMON MISTAKES
• Not Reusable 不能重複使⽤用
• Not Scalable 不能擴充
COMMON MISTAKES
• Not Reusable 不能重複使⽤用
• Not Scalable 不能擴充
• Redesign?
COMMON MISTAKES
#main-nav ul li ul li div .widget {}
#content atticle h1:first-child {}
#sidebar > div > h3 + p {}
• Overly Complicated Selectors
COMMON MISTAKES
• Overly Complicated Selectors
• Overly Generic Class Names
• Making a Rule Do Too Much
CSS Architecture
- http://philipwalton.com/articles/css-architecture/
CSS isn’t just visual
design.
OOP, Modular, DRY, open/closed principle etc. still apply
to CSS
蛤,可是物件導向我不會
- 世間情 三⽴立台灣台
Good CSS
Architecture
• 預測 - Predictable
• 複⽤用 - Reusable
• 維護 - Maintainable
• 延展 - Scalable
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
CSS Methodology
CSS Methodology
• OOCSS
• SMACSS
• BEM
• AMCSS
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
OBJECT
Oriented
CSS
- Nicole Sullivan 2009
Principles
• Separate Structure and Skin
• Separate Container and Content
Principles
• Separate Structure and Skin
https://dribbble.com/shots/989864-Flat-Roman-Typeface-Ui
by Cosmic Capitanu
Media Object
Media Object
Media Object
Base Class Sub Class
(modifier)
Descendent
Content
Descendent
Content
Principles
• Separate Container and Content
• break the dependency between the
container module and the content
objects it contains.
Some Guidelines
for OOCSS
• Avoid the descendent selector (i.e. don’t
use .sidebar h3)
• Avoid IDs as styling hooks
• Avoid attaching classes to elements in your
stylesheet (i.e. don’t do div.header or h1.title)
• Except in some rare cases, avoid using !
important
SCALABLE
MODULAR
ARCHITECTURE
CSS
- Jonathan Snook
PRinciples
• Categorizing CSS Rules
• 將 CSS 結構分類
• Naming Rules
• 命名規則
• Minimizing the Depth of Applicability
• 減少 CSS 與 HTML 的相依程度
Five Types of
Categories
• Base
• Layout
• Module
• State
• Theme
BASE
• applied to
• element
• descendent selector
• child selector
• pseudo-classes
• should be no !important
• CSS Resets
LAYOUT
LAYOUT
LAYOUT
<style>
#header {…}
.l-main {…}
.l-secondary {…}
.l-featured {…}
.l-featured > li {…}
</style>
<div id=”header”></div>
<div class=”l-main”></div>
<div class=”l-secondary”></div>
<div class=”l-featured”></div>
MODULE
• Modules 存在於 Layout components 下.
• Modules 也可存在於 Modules 下.
• 每個 Module 應該被設計成獨⽴立存在的
• 避免使⽤用 IDs 還有 element 當作 selector
MODULE
STATE
• 可以作⽤用於 Layout 和 Module 上
• 表⽰示狀態的變化
• 使⽤用 .is-* 開頭的 class 來定義
BLOCK
ELEMENT
MODULE
- Yandex http://bem.info
BLOCK
• 在⾴頁⾯面上獨⽴立存在, i.e. 可以在⾴頁⾯面之中任意更動
位置
• 是 Web Application 的 “building block”
• 可重複使⽤用
• Block 可以是 簡單⽽而單⼀一的 或是含有其他的
blocks
BLOCK
BLOCK
BLOCK
ELEMENT
• An internal part of BLOCK
• 只能存在於 BLOCK 內,沒有獨⽴立出來的意義
• BLOCK 不⼀一定要包含 ELEMENT(S)
ELEMENT
• 在 BLOCK 名稱後加上兩個底線 __ 作為 prefix
MODIFIER
• 定義 BLOCK 或 ELEMENT 的狀態或屬性
• 多組 MODIFIERS 可以共同作⽤用於⼀一個 BLOCK/
ELEMENT 上
MODIFIER
• 在 MODIFIER 之前加上兩個 —(dash) 當作 prefix
- MindBEMding
- http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/
QUICK SUMMARY
• .block {…}
• .block--modifier {…}
• .block__element {…}
• .block__element—modifier {…}
BUT SERIOUSLY?
—__-_—_—
- _— ___—__
ATTRIBUTE
METHOD
CSS
Glen Maddern, 2014
http://glenmaddern.com/articles/introducing-am-css
Why CLASSES?
• 3.2.5.7 The class attribute
• https://html.spec.whatwg.org/multipage/dom.html#classes
• The attribute, if specified, must have a value that is a set of
space-separated tokens representing the various classes that
the element belongs to.
• There are no additional restrictions on the tokens authors
can use in the class attribute, but authors are encouraged to
use values that describe the nature of the content, rather than
values that describe the desired presentation of the content.
Why CLASSES?
• Therefore,
• BEM
• .primary-nav__sub-nav—current
• Utilities
• .u-textTruncate
• left
• clearfix
• Javascript hook
• .js-whatevs
GLOBAL NAMESPACE
~=
Attribute is within
Space Separated List
<div class='a b c'>
.a { ... }
.b { ... }
.c { ... }
[class~='a'] { ... }
[class~='b'] { ... }
[class~='c'] { ... }
<div class=‘row’>
<div class=‘column-12’>Full</div>
</div>
<div class=‘row’>
<div class=‘column-4’>Thirds</div>
<div class=‘column-4’>Thirds</div>
<div class=‘column-4’>Thirds</div>
</div>
.row { /* max-width, clearfixes */ }
.column-1 { /* 1/12th width, floated */ }
.column-2 { /* 1/6th width, floated */ }
.column-3 { /* 1/4th width, floated */ }
.column-4 { /* 1/3th width, floated */ }
.column-5 { /* 5/12th width, floated */ }
/* etc */
.column-12 { /* 100% width, floated */ }
Normally we do
<div am-row>
<div am-column=‘12’>Full</div>
</div>
<div am-row>
<div am-column=‘4’>Thirds</div>
<div am-column=‘4’>Thirds</div>
<div am-column=‘4’>Thirds</div>
</div>
[am-row] { /* max-width, clearfixes */ }
[am-column~=“1”] { /* 1/12th width, floated */ }
[am-column~=“2”] { /* 1/6th width, floated */ }
[am-column~=“3”] { /* 1/4th width, floated */ }
[am-column~=“4”] { /* 1/3th width, floated */ }
[am-column~=“5”] { /* 5/12th width, floated */ }
[am-column~=“12”] { /* 100% width, floated */ }
AMCSS
<div am-row>
<div am-column>Full</div>
</div>
<div am-row>
<div am-column=‘1/3’>Thirds</div>
<div am-column=‘1/3’>Thirds</div>
<div am-column=‘1/3’>Thirds</div>
</div>
[am-row] { /* max-width, clearfixes */ }
[am-column] { /* 100% width, floated */ }
[am-column~=“1/12”] { /* 1/12th width, floated */ }
[am-column~=“1/6”] { /* 1/6th width, floated */ }
[am-column~=“1/4”] { /* 1/4th width, floated */ }
[am-column~=“1/3”] { /* 1/3th width, floated */ }
[am-column~=“5/12”] { /* 5/12th width, floated */ }
AMCSS
Styling both
attributes and values
• attribute 可以⽽而且應該要被 styled
• 屬性的 Value 可以改變與繼承 Base styles(也就是
attribute)
• namespace 的概念
Zero-class approach
• attribute 可以⽽而且應該要被 styled
• 屬性的 Value 可以改變與繼承 Base styles(也就是
attribute)
• namespace 的概念
zero-class approach
to BEM modifiers
header > nav [am-Button] { /* contextual overrides */ }
Good CSS
Architecture
• 預測 - Predictable
• 複⽤用 - Reusable
• 維護 - Maintainable
• 延展 - Scalable
http://philipwalton.com/articles/css-architecture/http://philipwalton.com/articles/css-architecture/
Thank you!
Benson
llwbenson@gmail.com

More Related Content

What's hot

Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designers
Pai-Cheng Tao
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Erin M. Kidwell
 

What's hot (20)

How to use CSS3 in WordPress
How to use CSS3 in WordPressHow to use CSS3 in WordPress
How to use CSS3 in WordPress
 
Introduction to HTML and CSS
Introduction to HTML and CSSIntroduction to HTML and CSS
Introduction to HTML and CSS
 
Pfnp slides
Pfnp slidesPfnp slides
Pfnp slides
 
Developing Your Ultimate Package
Developing Your Ultimate PackageDeveloping Your Ultimate Package
Developing Your Ultimate Package
 
CSS Reset
CSS ResetCSS Reset
CSS Reset
 
Yuicss R7
Yuicss R7Yuicss R7
Yuicss R7
 
Web front end development introduction to html css and javascript
Web front end development introduction to html css and javascriptWeb front end development introduction to html css and javascript
Web front end development introduction to html css and javascript
 
Be nice to your designers
Be nice to your designersBe nice to your designers
Be nice to your designers
 
Introduction to HTML and CSS
Introduction to HTML and CSSIntroduction to HTML and CSS
Introduction to HTML and CSS
 
Css best practices style guide and tips
Css best practices style guide and tipsCss best practices style guide and tips
Css best practices style guide and tips
 
Css.html
Css.htmlCss.html
Css.html
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
 
WCBuf: CSS Display Properties versus HTML Semantics
WCBuf: CSS Display Properties versus HTML SemanticsWCBuf: CSS Display Properties versus HTML Semantics
WCBuf: CSS Display Properties versus HTML Semantics
 
Css
CssCss
Css
 
CSS Best practice
CSS Best practiceCSS Best practice
CSS Best practice
 
Joomla! Template for Beginners
Joomla! Template for BeginnersJoomla! Template for Beginners
Joomla! Template for Beginners
 
Efficient, maintainable CSS
Efficient, maintainable CSSEfficient, maintainable CSS
Efficient, maintainable CSS
 
Html & CSS - Best practices 2-hour-workshop
Html & CSS - Best practices 2-hour-workshopHtml & CSS - Best practices 2-hour-workshop
Html & CSS - Best practices 2-hour-workshop
 
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
Girl Develop It Cincinnati: Intro to HTML/CSS Class 4
 
Styling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS EditionStyling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS Edition
 

Similar to Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS

Css for Development
Css for DevelopmentCss for Development
Css for Development
tsengsite
 
Web topic 15 1 basic css layout
Web topic 15 1  basic css layoutWeb topic 15 1  basic css layout
Web topic 15 1 basic css layout
CK Yang
 
Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01
Likitha47
 

Similar to Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS (20)

Css for Development
Css for DevelopmentCss for Development
Css for Development
 
Introduction to CSS Grid
Introduction to CSS GridIntroduction to CSS Grid
Introduction to CSS Grid
 
Architecture for css
Architecture for cssArchitecture for css
Architecture for css
 
Modular HTML & CSS Workshop
Modular HTML & CSS WorkshopModular HTML & CSS Workshop
Modular HTML & CSS Workshop
 
Material design
Material designMaterial design
Material design
 
Future-proof styling in Drupal (8)
Future-proof styling in Drupal (8)Future-proof styling in Drupal (8)
Future-proof styling in Drupal (8)
 
Intro to CSS Selectors in Drupal
Intro to CSS Selectors in DrupalIntro to CSS Selectors in Drupal
Intro to CSS Selectors in Drupal
 
Css week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandourCss week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandour
 
CSS Grid Changes Everything About Web Layouts: WordCamp Europe 2017
CSS Grid Changes Everything About Web Layouts: WordCamp Europe 2017CSS Grid Changes Everything About Web Layouts: WordCamp Europe 2017
CSS Grid Changes Everything About Web Layouts: WordCamp Europe 2017
 
Hardcore CSS
Hardcore CSSHardcore CSS
Hardcore CSS
 
BEM Methodology — @Frontenders Ticino —17/09/2014
BEM Methodology — @Frontenders Ticino —17/09/2014BEM Methodology — @Frontenders Ticino —17/09/2014
BEM Methodology — @Frontenders Ticino —17/09/2014
 
Slow kinda sucks
Slow kinda sucksSlow kinda sucks
Slow kinda sucks
 
How to use CSS3 in WordPress - Sacramento
How to use CSS3 in WordPress - SacramentoHow to use CSS3 in WordPress - Sacramento
How to use CSS3 in WordPress - Sacramento
 
Class15
Class15Class15
Class15
 
CSS framework By Palash
CSS framework By PalashCSS framework By Palash
CSS framework By Palash
 
Web I - 07 - CSS Frameworks
Web I - 07 - CSS FrameworksWeb I - 07 - CSS Frameworks
Web I - 07 - CSS Frameworks
 
Web topic 15 1 basic css layout
Web topic 15 1  basic css layoutWeb topic 15 1  basic css layout
Web topic 15 1 basic css layout
 
Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01
 
The Responsive Grid & You: Extending Your WordPress Site Across Multiple Dev...
The Responsive Grid & You:  Extending Your WordPress Site Across Multiple Dev...The Responsive Grid & You:  Extending Your WordPress Site Across Multiple Dev...
The Responsive Grid & You: Extending Your WordPress Site Across Multiple Dev...
 
Lecture2
Lecture2Lecture2
Lecture2
 

Recently uploaded

Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
jaanualu31
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
mphochane1998
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
MayuraD1
 
Verification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptxVerification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptx
chumtiyababu
 

Recently uploaded (20)

AIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech studentsAIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech students
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLEGEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
Employee leave management system project.
Employee leave management system project.Employee leave management system project.
Employee leave management system project.
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Computer Networks Basics of Network Devices
Computer Networks  Basics of Network DevicesComputer Networks  Basics of Network Devices
Computer Networks Basics of Network Devices
 
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKARHAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
HAND TOOLS USED AT ELECTRONICS WORK PRESENTED BY KOUSTAV SARKAR
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
 
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
 
kiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal loadkiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal load
 
Block diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptBlock diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.ppt
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
 
Verification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptxVerification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptx
 

Object-Oriented CSS 從 OOCSS, SMACSS, BEM 到 AMCSS