<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Claudia Romano</title>
    <description>The latest articles on DEV Community by Claudia Romano (@romano_cla).</description>
    <link>https://dev.to/romano_cla</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F181951%2F41198b11-4b75-434e-86b0-bc74e4fe8218.png</url>
      <title>DEV Community: Claudia Romano</title>
      <link>https://dev.to/romano_cla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/romano_cla"/>
    <language>en</language>
    <item>
      <title>Using responsive modifiers to control layout changes in your components</title>
      <dc:creator>Claudia Romano</dc:creator>
      <pubDate>Mon, 20 Jan 2020 13:17:40 +0000</pubDate>
      <link>https://dev.to/codyhouse/using-responsive-modifiers-to-control-layout-changes-in-your-components-pdd</link>
      <guid>https://dev.to/codyhouse/using-responsive-modifiers-to-control-layout-changes-in-your-components-pdd</guid>
      <description>&lt;p&gt;&lt;em&gt;A new approach to the responsiveness of content-dependent components.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Planning the responsive behavior of a component can be tricky, particularly when the component layout is highly affected by its content.&lt;/p&gt;

&lt;p&gt;For example, let's consider a table component. You may decide to use two different layouts: one optimized for smaller screens (&lt;em&gt;state-a&lt;/em&gt; layout), the other for bigger screens (&lt;em&gt;state-b&lt;/em&gt; layout).&lt;/p&gt;

&lt;p&gt;You would then need to decide the breakpoint for the change of layout and set it in CSS using a media query.&lt;/p&gt;

&lt;p&gt;However, the same table component could have two columns or twenty.&lt;/p&gt;

&lt;p&gt;If your table has a low number of columns, you may decide to change the layout at a small breakpoint:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9q2z9uvgo8xyyphz8fou.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9q2z9uvgo8xyyphz8fou.gif" alt="Table example: 3 columns"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a table with more columns or richer content, instead, you may want to change it later to make sure it does not look too crowded on small screens:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy30oo4totdi14ptemfzl.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy30oo4totdi14ptemfzl.gif" alt="Table example: 6 columns"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ideally, you should find a breakpoint that works for both of them (and all the other tables you have on your website). You could use a &lt;code&gt;.table&lt;/code&gt; class to define the style of the &lt;em&gt;state-a&lt;/em&gt; layout, and use a media query to overwrite this style for the &lt;em&gt;state-b&lt;/em&gt; layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;table&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"table"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- table content --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
  &lt;span class="nc"&gt;.table&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;/* state-a layout style */&lt;/span&gt;

    &lt;span class="err"&gt;@media&lt;/span&gt; &lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
        &lt;span class="c"&gt;/* state-b layout style */&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;This solution may not be ideal because the breakpoint you choose is a compromise&lt;/strong&gt;: you could end up with some tables that look too crowded and others too sparse. Even if you find a solution that seems to work with today's tables, it could easily break with tomorrow's.&lt;/p&gt;

&lt;h2&gt;
  
  
  Class Modifiers
&lt;/h2&gt;

&lt;p&gt;A possible alternative would be to define responsive class modifiers (classes that share the same style but target different breakpoints) to have the option of triggering the layout change at different breakpoints.&lt;/p&gt;

&lt;p&gt;If we consider an example with two breakpoints (small and medium), you would have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.table&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* state-a layout style */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* small breakpoint */&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.table--state-b&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;@sm&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;/* state-b layout style */&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* medium breakpoint */&lt;/span&gt;
&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1000px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.table--state-b&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;@md&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;/* state-b layout style */&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then you can apply those modifiers to different &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;s based on their content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- 👇 switch layout at a small breakpoint --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;table&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"table table--state-b@sm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/table&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- 👇 switch layout at a medium breakpoint --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;table&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"table table--state-b@md"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/table&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code defined in the &lt;code&gt;.table--state-b@sm&lt;/code&gt; class is the same as the one in the &lt;code&gt;.table--state-b@md&lt;/code&gt;. Remember, those two classes are used to create the same layout; it's only applied at different breakpoints.&lt;/p&gt;

&lt;p&gt;This approach has two main disadvantages. The first one is the maintainability of your code: if you need to make changes to the &lt;em&gt;state-b&lt;/em&gt; layout, you would need to update two different classes (&lt;code&gt;.table--state-b@sm&lt;/code&gt; and &lt;code&gt;.table--state-b@md&lt;/code&gt;). This is something you can solve using a CSS pre-processor (e.g., using SASS mixins).&lt;/p&gt;

&lt;p&gt;The second issue is having the CSS code for &lt;em&gt;state-b&lt;/em&gt; repeated multiple times in the final CSS (twice if you have two modifiers, but it could be more if you need additional variations!).&lt;br&gt;
Repeat this for all the components and the different media queries, and this could cause a significant increase in your CSS file size.&lt;/p&gt;
&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;p&gt;While working on the &lt;a href="https://codyhouse.co/ds/components/data-display/table" rel="noopener noreferrer"&gt;Table category&lt;/a&gt; of the Components Library at CodyHouse, we ended up using a different approach; we defined a class for the &lt;em&gt;state-b&lt;/em&gt; layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.table&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* state-a layout style */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.table--state-b&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* state-b layout style */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We then defined a &lt;code&gt;--table-layout&lt;/code&gt; CSS custom property inside the &lt;code&gt;.table&lt;/code&gt; class and modified its value using class modifiers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.table&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--table-layout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;state-a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.table--state-b&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;@sm&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="py"&gt;--table-layout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;state-b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1000px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.table--state-b&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;@md&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="py"&gt;--table-layout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;state-b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that the class modifiers are now used to change the value of a CSS custom property; there's no repetition of layout style.&lt;/p&gt;

&lt;p&gt;Using JavaScript, we can check whether to add or remove the &lt;code&gt;.table--state-b&lt;/code&gt; class based on the value of this CSS custom property. This will apply the proper layout style!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;layout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getComputedStyle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;table&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;getPropertyValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--table-layout&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;table&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toggle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;table--state-b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="nx"&gt;layout&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;state-b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This technique allows us to use a single class (&lt;code&gt;.table--state-b&lt;/code&gt;) for the layout style, regardless of the media query. Adding a new variation only requires setting the value of a single CSS custom property. No code repetition involved!&lt;/p&gt;

&lt;p&gt;In this example, we've been working with tables, but you can apply this technique to any component whose responsiveness is highly affected by its content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Downsides?
&lt;/h2&gt;

&lt;p&gt;This approach requires JavaScript to work, but that should not be an issue: if JS is off, we serve the &lt;em&gt;state-a&lt;/em&gt; version of the table, which is perfectly accessible.&lt;/p&gt;

&lt;p&gt;What about CSS custom properties support? Using CSS variables is probably the cleanest and most self-explanatory way. But if you need to support older browsers (e.g., IE 11 and below) you can use a &lt;code&gt;::before&lt;/code&gt; pseudo-element and change its content using the class modifiers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.table&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'state-a'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;600px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.table--state-b&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;@sm&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'state-b'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1000px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.table--state-b&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="k"&gt;@md&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'state-b'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In JS, you can check the value of the &lt;code&gt;::before&lt;/code&gt; content rather than a custom property. Same result, different browser support! You can decide based on your needs.&lt;/p&gt;

&lt;p&gt;That's it. I hope you find this approach useful. If you use a different technique, I would love to hear it!&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://codyhouse.co/blog" rel="noopener noreferrer"&gt;CodyHouse&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Tutorial: Create an accessible rating plugin</title>
      <dc:creator>Claudia Romano</dc:creator>
      <pubDate>Thu, 02 Jan 2020 12:35:47 +0000</pubDate>
      <link>https://dev.to/codyhouse/tutorial-create-an-accessible-rating-plugin-3ne7</link>
      <guid>https://dev.to/codyhouse/tutorial-create-an-accessible-rating-plugin-3ne7</guid>
      <description>&lt;p&gt;In this tutorial, we'll go through the different steps of creating a rating plugin in CSS and JavaScript, with a particular focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keyboard accessibility (use Tab key, Space bar and arrow keys to navigate and interact with the component);&lt;/li&gt;
&lt;li&gt;aria attributes and roles to improve Screen Reader accessibility;&lt;/li&gt;
&lt;li&gt;no JavaScript support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Final result:&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/codyhouse/embed/rNaGBJd?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The Rating plugin is also available &lt;a href="https://codyhouse.co/ds/components/app/rating"&gt;as a component&lt;/a&gt; in the CodyHouse UI Framework.&lt;/p&gt;

&lt;p&gt;To follow along the tutorial, fork this pen on Codepen:&lt;br&gt;
🕹 &lt;a href="//codepen.io/codyhouse/pen/Wqvpmm"&gt;codepen.io/codyhouse/pen/Wqvpmm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or download CodyFrame on Github:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📦 Framework &lt;a href="//github.com/CodyHouse/codyhouse-framework"&gt;github.com/CodyHouse/codyhouse-framework&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎨 A1 Theme &lt;a href="//github.com/CodyHouse/a1-codyframe-theme"&gt;github.com/CodyHouse/a1-codyframe-theme&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the video tutorial:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/uvAiYCm3t3U"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://codyhouse.co/tutorials"&gt;CodySchool&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
