<?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: Njeri Cooper</title>
    <description>The latest articles on DEV Community by Njeri Cooper (@njericooper).</description>
    <link>https://dev.to/njericooper</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%2F146740%2F4594f8c8-9c70-4b62-9053-0b7797fd3459.jpg</url>
      <title>DEV Community: Njeri Cooper</title>
      <link>https://dev.to/njericooper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/njericooper"/>
    <language>en</language>
    <item>
      <title>What Are The Best A11y Resources/Tips?</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Fri, 27 Dec 2019 17:25:24 +0000</pubDate>
      <link>https://dev.to/njericooper/what-are-the-best-a11y-resources-tips-27g2</link>
      <guid>https://dev.to/njericooper/what-are-the-best-a11y-resources-tips-27g2</guid>
      <description>&lt;p&gt;What are some of the best tips for making sites accessible and A11y compliant? Do you only use semantics? Aria roles; do you toggle them on/off in Javascript, visible/ hidden in CSS? Is there an end-all-be all resource for web accessibility?&lt;/p&gt;

&lt;p&gt;Personally, I use these tools when checking the accessibility compliance of the web apps I build: &lt;/p&gt;

&lt;h2&gt;
  
  
  Accessible color palette builder
&lt;/h2&gt;

&lt;p&gt;This elm based prototype helps designers build color palettes that conform to accessibility standards. Check out the project's website &lt;a href="https://toolness.github.io/accessible-color-matrix/"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w38GqCTz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cloud.githubusercontent.com/assets/124687/15707652/e6ecca76-27c7-11e6-8373-e1231b81f1ba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w38GqCTz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cloud.githubusercontent.com/assets/124687/15707652/e6ecca76-27c7-11e6-8373-e1231b81f1ba.png" alt="this tool shows a matrix of foreground and background colors"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility Archives From My Favorite Dev Sources:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  - &lt;a href="https://css-tricks.com/tag/accessibility/"&gt;CSS Tricks&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - &lt;a href="https://developer.mozilla.org/en-US/search?q=a11y"&gt;MDN&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - (Some people won't agree, but) &lt;a href="https://www.w3.org/WAI/roles/developers/"&gt;W3&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - Talking to Other Devs
&lt;/h3&gt;

&lt;p&gt;Specifically ones that work on web accessibility at work everyday. Shout out to &lt;a href="https://dev.to/vetswhocode"&gt;VWC&lt;/a&gt; and all the troops that help me be a better developer everyday.&lt;/p&gt;

&lt;p&gt;Drop links and personal experiences below.&lt;/p&gt;

</description>
      <category>webaccessibiity</category>
      <category>a11y</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Landing Page Demo</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Tue, 24 Dec 2019 21:06:46 +0000</pubDate>
      <link>https://dev.to/njericooper/landing-page-demo-597</link>
      <guid>https://dev.to/njericooper/landing-page-demo-597</guid>
      <description>&lt;p&gt;Building out a landing page for a side project. Please drop comments, constrictive criticism, concerns below. &lt;/p&gt;

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

&lt;p&gt;Preview the live version &lt;a href="https://njeri.codes/deals.html"&gt;here&lt;/a&gt;&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--fmSzl1yw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1039158342478786560/CvkRvMDe_normal.jpg" alt="Njeri Cooper profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Njeri Cooper
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/njericooper"&gt;@njericooper&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      "Landing Page Demo" by &lt;a href="https://twitter.com/njericooper"&gt;@njericooper&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/DEVcommunity"&gt;#DEVcommunity&lt;/a&gt; &lt;a href="https://t.co/Ma7d4CpsOb"&gt;dev.to/njericooper/la…&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      21:07 PM - 24 Dec 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1209581471599599616" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1209581471599599616" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1209581471599599616" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      0
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Also, happy holidays 🎄 🎄  &lt;/p&gt;

</description>
      <category>codepen</category>
      <category>html</category>
      <category>javascript</category>
      <category>css</category>
    </item>
    <item>
      <title>Can Callback URLS Be Any URL?</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Tue, 26 Nov 2019 23:16:33 +0000</pubDate>
      <link>https://dev.to/njericooper/can-callback-urls-be-any-url-28kn</link>
      <guid>https://dev.to/njericooper/can-callback-urls-be-any-url-28kn</guid>
      <description>&lt;p&gt;I’m building 2 bots. One with Twilio and the other with Twitter. A lot of docs say to use a service like Heroku or ngrok for callback URLs, but one problem - they go to sleep and must be restated or on a paid tier for continuous use. &lt;/p&gt;

&lt;p&gt;Can I just make a page using one of my own domains or a firebase server as a callback? &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>react</category>
    </item>
    <item>
      <title>A First-Timers Guide to Navigating Tech Conferences</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Mon, 11 Nov 2019 21:36:47 +0000</pubDate>
      <link>https://dev.to/njericooper/a-first-timers-guide-to-navigating-tech-conferences-3c0k</link>
      <guid>https://dev.to/njericooper/a-first-timers-guide-to-navigating-tech-conferences-3c0k</guid>
      <description>&lt;p&gt;Last week, I attended &lt;a href="https://twitter.com/cascadiajs"&gt;CascadiaJs&lt;/a&gt; in Seattle, WA. It was my first major tech conference, meaning that I had to catch a plane and stay in a different city for more than 48 hours. Here are my key takeaways from the event and how I plan to navigate the next tech conference I attend. &lt;/p&gt;

&lt;h2&gt;
  
  
  Travel Day
&lt;/h2&gt;

&lt;p&gt;I traveled over 1,000 miles to get to the conference location. I thought I knew how to pack light - I was wrong. Here's what I would do differently next time:&lt;/p&gt;

&lt;h4&gt;
  
  
  - Under pack
&lt;/h4&gt;

&lt;p&gt;My bag was packed to precision, bursting at its seams with ranger-rolled t-shirts and socks. On the way back home, it was a hassle to take my laptop out for TSA security screening. &lt;/p&gt;

&lt;p&gt;I had the exact amount of outfits I thought I needed and left no room for new swag. I will not bring any additional shirts or jackets when I go to the next conference. One pair of pants and a few pairs of undergarments is enough. Seriously. &lt;/p&gt;

&lt;h4&gt;
  
  
  - Buy a neck pillow
&lt;/h4&gt;

&lt;p&gt;Sleeping on the plane was impossible for me because I sat in front of an emergency exit. As a result, I could not adjust my seat for comfort. Lower back and neck pillows would have been lifesavers.&lt;/p&gt;

&lt;h5&gt;
  
  
  Here are a few things I got right:
&lt;/h5&gt;

&lt;h4&gt;
  
  
  Double checking flight info
&lt;/h4&gt;

&lt;p&gt;I went to the airport's websites and entered the flight number to make sure I saved a file in my note app with all the details I needed. A screenshot of my ticket confirmation, a typed out flight number so Siri could have access to my flight info, and events saved in my calendar app with the correct timezones. &lt;/p&gt;

&lt;h4&gt;
  
  
  Wearing a light jacket
&lt;/h4&gt;

&lt;p&gt;I have an old military jacket that I always wear when I travel so I can put any additional toiletries there and keep my phone and wallet secure when going through screening lines. It's a lot easier put on and take off than a hoodie.&lt;/p&gt;

&lt;h4&gt;
  
  
  Wearing comfy walking shoes
&lt;/h4&gt;

&lt;p&gt;I never know what weather to expect when I land, so I always wear easy slide-on footwear that will keep my feet dry in the rain. &lt;/p&gt;

&lt;h4&gt;
  
  
  Using a charging backpack
&lt;/h4&gt;

&lt;p&gt;This is a new one for me. Not only did I keep my phone above 80% the whole trip, but I also got a lot of questions and compliments about how cool and weird it looks.&lt;/p&gt;

&lt;p&gt;Check out the life-changing bag &lt;a href="https://amzn.to/2Q8Zn9g"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/Solgaard-Lifepack-Lockable-Solarbank-Powerbank/dp/B07XFFNMRB/ref=as_li_ss_il?crid=UNQ7E9L8PF45&amp;amp;keywords=lifepack+backpack&amp;amp;qid=1573483345&amp;amp;sprefix=lifepack,aps,169&amp;amp;sr=8-1-spons&amp;amp;psc=1&amp;amp;spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExQzhYUDZFRjYwVUlWJmVuY3J5cHRlZElkPUEwOTY5NjIyMVFHMTBPTVZESkExNCZlbmNyeXB0ZWRBZElkPUEwMzg3NDk4MTJCT1hWMElTSlJYUiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=&amp;amp;linkCode=li3&amp;amp;tag=coopcodes-20&amp;amp;linkId=a0467d62855c29418114a6ba54ada050&amp;amp;language=en_US"&gt;&lt;img src="//ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=B07XFFNMRB&amp;amp;Format=_SL250_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=coopcodes-20&amp;amp;language=en_US"&gt;&lt;/a&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1SXWyC3o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ir-na.amazon-adsystem.com/e/ir%3Ft%3Dcoopcodes-20%26language%3Den_US%26l%3Dli3%26o%3D1%26a%3DB07XFFNMRB" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1SXWyC3o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://ir-na.amazon-adsystem.com/e/ir%3Ft%3Dcoopcodes-20%26language%3Den_US%26l%3Dli3%26o%3D1%26a%3DB07XFFNMRB" width="1" height="1" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  First Encounters
&lt;/h3&gt;

&lt;p&gt;My first encounter with people that were attending the conference was at the "Speakers Dinner".  I had not done research on everyone that would be there and had no clue who I was sitting directly next to. Good thing I was tired from the flights and didn't have much energy to say anything silly. Next time, I'll be sure to:&lt;/p&gt;

&lt;h4&gt;
  
  
  Have some energy
&lt;/h4&gt;

&lt;p&gt;I don't like how processed energy drinks are, but B12 vitamins, some pure honey or ginseng would have definitely helped me not be such a drag at 6 pm.&lt;/p&gt;

&lt;h4&gt;
  
  
  Exchange info
&lt;/h4&gt;

&lt;p&gt;I usually wait a while before asking someone for their Twitter handle, but because I'm growing a network, I realized that I should have connected with people I talked to asap. At the end of a conversation/ interaction with someone new, I tried to always add a "Would you mind if I connect with you on Twitter?" at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Conference Days
&lt;/h2&gt;

&lt;p&gt;There were events planned the whole week, but I was only in town to catch the two-day conference. If I were local, the extracurricular days would have been fun to check out. &lt;/p&gt;

&lt;p&gt;I'm the type that feels content with arriving at a location safely and figuring the rest out as I go, but in the future, I will:&lt;/p&gt;

&lt;h4&gt;
  
  
  - Know how to get to the venue
&lt;/h4&gt;

&lt;p&gt;I was not sure of the name of the venue or its address. I would not have worn so many layers if I'd known it was a mile hike uphill from where I was staying. &lt;/p&gt;

&lt;h4&gt;
  
  
  - Research the venders, sponsors, and speakers
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---TWX7kY9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ekg9ouryxlx68eftou2z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---TWX7kY9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ekg9ouryxlx68eftou2z.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://2019.cascadiajs.com/"&gt;CascadiaJs&lt;/a&gt; had a beautiful website with the full event schedule, sponsors, organizers, and attendees on the home page. I used it as a resource multiple times an hour to check what talk was coming up, where engineer meetings were being held, what the vegetarian option was for lunch, etc. &lt;/p&gt;

&lt;p&gt;The tools on the website made it easy to connect with speakers, view job opportunities, and build more rapport with attendees. &lt;/p&gt;

&lt;p&gt;One cool platform I learn about via the conference is &lt;a href="https://fizbuz.com/u/njericooper"&gt;FizBuz&lt;/a&gt;, an inclusive and recruiter-free networking platform for developers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pLJlW_UH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/c67bgm03u0zfmsn10lnp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pLJlW_UH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/c67bgm03u0zfmsn10lnp.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  - Take more notes
&lt;/h4&gt;

&lt;p&gt;A pen and paper would have been a bit much to keep up with, but I could have definitely used my favorite writing app, &lt;a href="https://apps.apple.com/us/app/drafts/id1236254471"&gt;Drafts&lt;/a&gt;. It has Markdown support, publishes directly to your preferred CMS, and allows cross device-syncing. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6QIchuug--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/snfhbiwzaozoq8jul8qa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6QIchuug--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/snfhbiwzaozoq8jul8qa.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  - Prepare to speak with managers
&lt;/h4&gt;

&lt;p&gt;I loved how there were built-in times to meet with hiring managers and recruiters. On the website, there was a TypeForm that let me pick which companies I wanted to speak with the most. I had a few questions in mind before I sat down for my chats that revolved around their codebases, work-life balance initiatives, inclusion in the workplace, and expectations for new hires. &lt;/p&gt;

&lt;h4&gt;
  
  
  - Talk to more people
&lt;/h4&gt;

&lt;p&gt;Sometimes walking up to someone and saying, "Hello" is not as easy as it sounds. I get it. However, in the comfort of a tech conference around nerdy nerds, hopefully, some introverted social anxiety melts away while sipping the unlimited coffee. &lt;/p&gt;

&lt;p&gt;I tried to remind myself that I was there to make new connections that could lead to a new software engineering position. This kept me chatting it up with the nearest person I could spot that wasn't wrapped up in their phone or in another conversation.&lt;/p&gt;

&lt;h4&gt;
  
  
  - Prepare to ditch dev talk
&lt;/h4&gt;

&lt;p&gt;One aspect I didn't know to expect was the after conference social settings. Both days closed with a sort of after-party. Just what was needed after a long day of networking.&lt;/p&gt;




&lt;p&gt;Thank you to the organizers of &lt;a href="https://twitter.com/CascadiaJS"&gt;CascadiaJs&lt;/a&gt;, the awesome new friends and mentors I met, the boatload of opportunities that lay before me, and you, the reader. You're awesome. Please connect with me via &lt;a href="https://twitter.com/njericooper"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I'd like to give a very special thank you to &lt;a href="https://twitter.com/JeromeHardaway"&gt;Jerome Hardaway&lt;/a&gt; and all of &lt;a href="https://twitter.com/VetsWhoCode"&gt;VetsWhoCode&lt;/a&gt; for making it possible for me to attend and teaching me cool nerd things. Help veterans learn how to program Javascript by supporting &lt;a href="https://hashflag.shop/"&gt;#HashFlag Swag&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8rN1YfcX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kdghbbo7mrnev9uv3mqo.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8rN1YfcX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kdghbbo7mrnev9uv3mqo.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What was attending a tech conference like for you the first time? Do you have any pre-conf rituals?&lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--afhIFhtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e1ncu5hc613igd9xocrp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--afhIFhtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e1ncu5hc613igd9xocrp.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Njeri Cooper
&lt;/h4&gt;

&lt;p&gt;Njeri uses the web to educate, innovate, and create. Feel free to send Njeri a message &lt;a href="https://twitter.com/messages/compose?recipient_id=1039157808468578305"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.twitter.com/njericooper"&gt;Twitter&lt;/a&gt; |   | &lt;a href="//bit.ly/njeris-codepen"&gt;CodePen&lt;/a&gt; |   | &lt;a href="//bit.ly/njeris-github"&gt;Github&lt;/a&gt;&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--fmSzl1yw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1039158342478786560/CvkRvMDe_normal.jpg" alt="Njeri Cooper profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Njeri Cooper
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/njericooper"&gt;@njericooper&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Wrote a post about my key takeaways from &lt;a href="https://twitter.com/hashtag/cjs2019"&gt;#cjs2019&lt;/a&gt; and some "note-to-selfs" for next time. &lt;br&gt;&lt;br&gt;Happy Veterans Day to the troops &lt;a href="https://twitter.com/VetsWhoCode"&gt;@VetsWhoCode&lt;/a&gt; 🇺🇸&lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/5BiqMMuvjX"&gt;dev.to/njericooper/a-…&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="https://twitter.com/hashtag/DEVcommunity"&gt;#DEVcommunity&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      21:41 PM - 11 Nov 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1194007349624737792" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1194007349624737792" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1194007349624737792" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      0
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>cjs2019</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>3 Powerful Tips for a Developer's Portfolio </title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Fri, 02 Aug 2019 11:18:23 +0000</pubDate>
      <link>https://dev.to/njericooper/3-powerful-tips-for-a-developer-s-portfolio-4g47</link>
      <guid>https://dev.to/njericooper/3-powerful-tips-for-a-developer-s-portfolio-4g47</guid>
      <description>&lt;p&gt;Over the last 4 months, I've built and scrapped 3 versions of my personal website. It was missing a lot of stuff and I wasn't able to figure out exactly what without guidance. After reading several books and taking courses, it was clear that my website was basic. It had no special web technologies. It would not help me become the developer that's behind the title. The process was meticulous, but I learned the significance of having a personal portfolio. Here are the key takeaways from my journey:&lt;/p&gt;

&lt;h4&gt;
  
  
  Select All + Delete  and Start From Scratch
&lt;/h4&gt;

&lt;p&gt;Sometimes we become attached and get married to our visions and ideas. Over these 4 months, I've learned that most ideas suck and the vision may not serve the projected end user. My site wasn't live. It had no monthly traffic. There were no backlinks directed to it, so instead of trying to put Fabreze on the poop pile of my site, I nuked it. When I started over, each time I had more knowledge, skill, and technique than the last time.&lt;/p&gt;

&lt;h4&gt;
  
  
  Use Your Best Tools
&lt;/h4&gt;

&lt;p&gt;I got comfortable with showcasing relevant tools and technologies, but not overdoing it. It didn't make sense to have a dropdown menu with aria states or an animated CSS email form. 😔 Instead, I made a beautiful button that linked to my CodePen projects. That made more sense because that's where I've put these types of projects on display. The nav bar I wanted to use had transitions and lots of Javascript to show off my arrow function skills. Woefully, I had to be okay with using Javascript sparingly. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/5zkVwzBPwjBADbvFi6/200w_d.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/5zkVwzBPwjBADbvFi6/200w_d.gif" alt="Saltbae Gif from Giphy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create your site with the languages and tools you want to be hired to use.&lt;/p&gt;

&lt;h4&gt;
  
  
  Be The Product
&lt;/h4&gt;

&lt;p&gt;I love creating... for other people. I had a hard time becoming and making my website the product. It took an old school product design session of outlining the user personas and their tasks to drive it home for me. I am what the user wants to see. My image, title, and skills needed to be above the fold, not below like when I'm creating other things.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bonus: aSk FoR hElp
&lt;/h4&gt;

&lt;p&gt;As a junior dev, I'd have to be psychic to know what exactly hiring managers are looking for. Either that or I'd have sat in on interviews or had senior dev workload. I haven't done that, but I do know a few devs I could have critique my projects.&lt;/p&gt;

&lt;p&gt;You may not want to bother your super smart and busy network with something as simple as a portfolio.  If it means leveling up into the next tax bracket, eh. Remember, there's no such thing as a stupid question. You know what they say, "better safe than under valued."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/LMcQtGUlP4Zb0G2ByL/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/LMcQtGUlP4Zb0G2ByL/giphy.gif" alt="Spongebob chicken meme from Giphy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Check out my portfolio on Codepen
&lt;/h3&gt;

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

&lt;h3&gt;
  
  
  Or on Github
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qF2jUiUG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-6a5bca60a4ebf959a6df7f08217acd07ac2bc285164fae041eacb8a148b1bab9.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/njericooper"&gt;
        njericooper
      &lt;/a&gt; / &lt;a href="https://github.com/njericooper/My-Website"&gt;
        My-Website
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Code for my personal Website. I'm back, f*ckers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="instapaper_body md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/njericooper/My-Website/blob/master/readme-header.png?raw=true"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GCmY3ruK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/njericooper/My-Website/raw/master/readme-header.png%3Fraw%3Dtrue" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Tools used&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;CSS Grid&lt;/li&gt;
&lt;li&gt;CSS Flexbox&lt;/li&gt;
&lt;li&gt;SMACCS&lt;/li&gt;
&lt;li&gt;JS Date() Object&lt;/li&gt;
&lt;li&gt;Aria roles&lt;/li&gt;
&lt;li&gt;Accessible color palette builder (visit the Github project &lt;a href="https://toolness.github.io/accessible-color-matrix/?n=white&amp;amp;n=light&amp;amp;n=bright&amp;amp;n=medium&amp;amp;n=dark&amp;amp;n=black&amp;amp;v=FCFEF1&amp;amp;v=FFDD47&amp;amp;v=FFB8C0&amp;amp;v=67DFD0&amp;amp;v=3E6897&amp;amp;v=0D0D0D" rel="nofollow"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Serverless (Hosted on Firebase using Cloud functions)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Design Inspiration&lt;/h2&gt;
&lt;p&gt;Cartoon TV show:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.cartoonnetwork.com/video/steven-universe/index.html?atclk_gn=un_video_steven-universe" rel="nofollow"&gt;Steven Universe&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Character: &lt;a href="https://steven-universe.fandom.com/wiki/Garnet" rel="nofollow"&gt;Garnet&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gems: &lt;a href="https://steven-universe.fandom.com/wiki/Sapphire" rel="nofollow"&gt;Sapphire&lt;/a&gt; and &lt;a href="https://steven-universe.fandom.com/wiki/Ruby" rel="nofollow"&gt;Ruby&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/909c9da195a9f9f2e12dedc0d0fd17daa46b1416/68747470733a2f2f756361726563646e2e636f6d2f34653538333164352d653264612d346465662d613231342d3138666335393761623962352f6d7967616769662e676966"&gt;&lt;img src="https://camo.githubusercontent.com/909c9da195a9f9f2e12dedc0d0fd17daa46b1416/68747470733a2f2f756361726563646e2e636f6d2f34653538333164352d653264612d346465662d613231342d3138666335393761623962352f6d7967616769662e676966" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
Njeri Cooper&lt;/h4&gt;
&lt;p&gt;I use the web to educate, innovate, and create. Feel free to send me a message &lt;a href="https://twitter.com/messages/compose?recipient_id=1039157808468578305" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://njeri.codes" rel="nofollow"&gt;Website&lt;/a&gt; |   | &lt;a href="https://www.codepen.io/njericooper" rel="nofollow"&gt;CodePen&lt;/a&gt; |   | &lt;a href="https://raw.githubusercontent.com/njericooper/My-Website/master/readme.md/www.dev.to/njericooper"&gt;DevTo&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/njericooper/My-Website"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;What are some must-haves on your website? What do you look for on candidates portfolios? Please, share below.  &lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--afhIFhtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e1ncu5hc613igd9xocrp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--afhIFhtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e1ncu5hc613igd9xocrp.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Njeri Cooper
&lt;/h4&gt;

&lt;p&gt;I use the web to educate, innovate, and create. Feel free to send me a message &lt;a href="https://twitter.com/messages/compose?recipient_id=1039157808468578305"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://njeri.codes"&gt;Website&lt;/a&gt; |   | &lt;a href="https://www.twitter.com/njericooper"&gt;Twitter&lt;/a&gt; |   | &lt;a href="https://codepen.io/njericooper/"&gt;CodePen&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>showdev</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>The Emotional State of a Developer, a Question </title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Mon, 08 Jul 2019 03:57:15 +0000</pubDate>
      <link>https://dev.to/njericooper/the-emotional-state-of-a-developer-a-question-2amd</link>
      <guid>https://dev.to/njericooper/the-emotional-state-of-a-developer-a-question-2amd</guid>
      <description>&lt;p&gt;What’s the first thing you think and feel when you’re debugging or building something new and realize that the solution is not searchable. It may take an hour to even figure out what the underlying issue is, let alone fix it. Me? I typically get overwhelmed by the 40 tabs of Stack Overflow I have open.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gwbL4MkI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/tweet_video_thumb/D-4uge5U4AUErw4.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--gdWK18rw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1075408955931684864/1e8PKOyV_normal.jpg" alt="Valerie Phoenix 🌻🍯 🐝 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Valerie Phoenix 🌻🍯 🐝
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/digitalblkhippy"&gt;@digitalblkhippy&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Tech update: TDD actually means Tear Driven Development. Methodology used by devs who need an emotial release&lt;br&gt;&lt;br&gt;Alt: Alice from Alice in wonderland crying large tears 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:31 PM - 07 Jul 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1147906097392410625" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1147906097392410625" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1147906097392410625" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      6
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>discuss</category>
    </item>
    <item>
      <title>7 Must Haves for Web Accessible HTML in Your Site ❤️️ [Template]</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Sun, 30 Jun 2019 23:25:34 +0000</pubDate>
      <link>https://dev.to/njericooper/7-must-haves-for-html-in-your-site-template-578i</link>
      <guid>https://dev.to/njericooper/7-must-haves-for-html-in-your-site-template-578i</guid>
      <description>&lt;p&gt;Lots of developers are building their own personal blogs, brands, and working on side projects. What better way to strengthen development skills than incorporating the best web accessibility practices into each web app? At the time of writing, these are some of the best ways to make a site accessible to the visually and physically impaired:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Aria Roles, States, and Properties
&lt;/h3&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%2F4h1fiuxoj1gdgknhxgt7.png" 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%2F4h1fiuxoj1gdgknhxgt7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ARIA stands for accessible rich internet applications. These applications are a list of attributes that communicate with a subset of the DOM called the accessibility tree. The accessibility tree is a more simplified rendering of a website. Some may call this the "shadow DOM". This version is readable by screen readers and focusable for keyboard users.&lt;/p&gt;

&lt;p&gt;Assigning the correct role property to an HTML tag lets ARIA file its intended function. It's important to not use abstract terms when defining roles. There are a few types of roles that serve the purpose of structuring a site for the DOM and the accessibility tree. The types of roles and a few examples of them are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h4&gt;Landmarks&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Navigation&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Banner&lt;/li&gt;
&lt;li&gt;Main&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;h4&gt;Widgets&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;menuitem &lt;/li&gt;
&lt;li&gt;tab&lt;/li&gt;
&lt;li&gt;textbox&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;h4&gt;Document Structure&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;article&lt;/li&gt;
&lt;li&gt;img&lt;/li&gt;
&lt;li&gt;row&lt;/li&gt;
&lt;li&gt;toolbar&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;An alphabetical list of all ARIA roles and their definitions can be found in &lt;a href="https://www.w3.org/WAI/PF/aria-1.1/roles" rel="noopener noreferrer"&gt;section 5.4 of The Roles Model by w3&lt;/a&gt;. Below is an example of what appropriate roles would look like for a nav bar.&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;nav&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"navigation"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menu"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;About&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In addition to ARIA roles, there are states and properties which have values that give HTML tags characteristics. These values can be a boolean, number, token, etc., and globally define elements on the DOM. For example, a menuitem widget can have the state of "hidden" that is changed on hover. A use case for this may be a dropdown menu that becomes visible when focused on with a mouse or keyboard selection. Here's what would be placed inside of the html tag&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;aria-hidden="true"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another ARIA attribute that may be used in a nav bar is aria-owns. To let the DOM now that the menu item has a parent child relationship with the menu items nested under it.&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;nav&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"navigation"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menu"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;aria-owns=&lt;/span&gt;&lt;span class="s"&gt;"child-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;About&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"child-item"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

                &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;

                    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;My Mission&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

                &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

                &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;

                    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Portfolio&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

                &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assigning ownership would help to set the DOM and accessibility tree structure. This is useful in the event that some of the HTML becomes unordered.&lt;/p&gt;

&lt;p&gt;Here's a &lt;a href="https://www.w3.org/WAI/PF/aria-1.1/states_and_properties" rel="noopener noreferrer"&gt;list of all official aria states and properties&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Semantics
&lt;/h3&gt;

&lt;p&gt;One of the dangers of ARIA is that developers can make the whole accessibility thing a catch 22.&lt;/p&gt;

&lt;p&gt;Sometimes, we create elements on a website just to get it up and working. The thought of completing a project with urgency is appealing. Doing this results in poorly written code that just "works". It will boost user experience if the HTML tags correspond with its intended function. The most common example of what I mean is using a span, div, or text element as a button instead of using the button tag. This is a misuse that overrides the accessibility definitions already in place. To quote Steve Faulkner "No ARIA is better than Bad ARIA".&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%2Flb289nfzxm87qw8lh5su.png" 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%2Flb289nfzxm87qw8lh5su.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-946370347389128704-354" src="https://platform.twitter.com/embed/Tweet.html?id=946370347389128704"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-946370347389128704-354');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=946370347389128704&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Alt Text
&lt;/h3&gt;

&lt;p&gt;Alt text is short for alternative text. The alternative text is not visible to the user, but holds information about its link or image. It can be a description or an attribute. It is available to screen readers and search engines to index images and links. &lt;/p&gt;

&lt;p&gt;On my website, I add alt text with my name, what I do, and image descriptions. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Media with Lazy Loading
&lt;/h3&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%2F8mohvzcxazvz2ayniiqr.png" 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%2F8mohvzcxazvz2ayniiqr.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lazy loading is a native feature in the Google Chrome browser. It allows for images to be loaded only when you look at them. This is awesome because images and videos don't pre-load and down the page’s speed. To use the lazy loading feature use this code in image HTML tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;loading="lazy"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is Javascript that adds cross-browser support. To learn more about lazy loading for other browsers, &lt;a href="https://addyosmani.com/blog/lazy-loading/" rel="noopener noreferrer"&gt;check out this article by Addy Osmani&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Sections
&lt;/h3&gt;

&lt;p&gt;Implementing sections into a website helps to separate the different types of content. Sections could be landmark tags like search, side bars, main content.  Section tags let assistive technologies know that the developer is making a "region" on a page. On my website, I use it to make "about me" separate from "what I do". The structure looks like this:&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;div&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"main"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"section section-1"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"who"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"who"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Who TF is Coop?&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Demo Text&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"section section-2"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"what"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;What&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To learn more about the region role and how it's used and classified by ARIA, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Region_role" rel="noopener noreferrer"&gt;check out this MDN page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Tab Index
&lt;/h3&gt;

&lt;p&gt;Some web users navigate a website by only using a keyboard. Up and down arrows scroll, the tab key focuses on links, buttons, and selectable page elements and the enter key selects. Modern browsers have keyboard focus built in. If a web browser cannot detect the portions on a website that should be clicked on or hovered over, use tabindex. Tabindex sets an order or hierarchy to selectable items on a page. The default value is 0. This means that everything is equally important and will be ordered from left to right for rows, then up and down for side menus or columns. Change the value of tab index to match the page's layout and ensure for the easiest navigation&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Inclusive Design
&lt;/h3&gt;

&lt;p&gt;I've learned that the best way to make sure a website is accessible is to use all the features. Try turning on voice over, screen readers, or using your keyboard to get around your website. Being aware is the only way that we as humans can make sure our web apps are accessible to everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Full Homepage Code Template
&lt;/h2&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/njericooper/embed/MMQBgz?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&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;!--begin nav bar--&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"nav"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"nav"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"navigation"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"navbar"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menu"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#home"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"home"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#who"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Who is Njeri Cooper?"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Who&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#what"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"What does Njeri Cooper Do?"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;What&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#contact"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"menuitem"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Contact Njeri Cooper"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"3"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!--begin main content section--&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"main"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"section section-1"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"who"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"who"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Who TF is Coop?&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Njeri Cooper is a front end web and iOS developer. Lorem Khaled Ipsum is a major key to success.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;They don’t want us to win. I’m giving you cloth talk, cloth. Special cloth alert, cut from a special cloth.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"section section-2"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"what"&lt;/span&gt; &lt;span class="na"&gt;background=&lt;/span&gt;&lt;span class="s"&gt;"https://vignette.wikia.nocookie.net/steven-universe/images/e/ed/Steven_the_Swordfighter_Cloud_Temple_Background.jpg/"&lt;/span&gt; &lt;span class="na"&gt;loading=&lt;/span&gt;&lt;span class="s"&gt;"lazy"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Cloud Temple Image From Steven Universe"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"what"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;What&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"links"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"contact"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"http://github.com/njericooper"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Njeri's Github"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;git&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://dev.to/njericooper"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Njeri's tech blog"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;dev to&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://twitter.com/njericooper"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"last"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Njeri's Twitter"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;twitter&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt; &lt;span class="c"&gt;&amp;lt;!--end main content section--&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"email-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"email_container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"singular-form"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"form"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"shown"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"trigger"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"7"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Notify me&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"input-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"E-mail"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Send&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"success"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Thank you!&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;            
&lt;span class="c"&gt;&amp;lt;!--Footer--&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;footer&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"footer"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"contentinfo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;©2019 OG Codes&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/footer&amp;gt;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fe1ncu5hc613igd9xocrp.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%2Fe1ncu5hc613igd9xocrp.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Njeri Cooper
&lt;/h4&gt;

&lt;p&gt;Njeri uses the web to educate, innovate, and create. Read her authentic student to freelance dev &lt;a href="https://www.instagram.com/p/BiYDvvxhWKH/" rel="noopener noreferrer"&gt;story&lt;/a&gt;. Feel free to send Njeri a message &lt;a href="https://twitter.com/messages/compose?recipient_id=1039157808468578305" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.twitter.com/njericooper" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; |   | &lt;a href="https://www.pinterest.com/njericooper" rel="noopener noreferrer"&gt;Pinterest&lt;/a&gt; |   | &lt;a href="https://www.instagram.com/ogcoopknowscrypto" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webaccessibility</category>
      <category>howto</category>
      <category>aria</category>
      <category>html</category>
    </item>
    <item>
      <title>Storing Local Data with Javascript</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Tue, 25 Jun 2019 00:22:56 +0000</pubDate>
      <link>https://dev.to/njericooper/storing-local-data-with-javascript-6m9</link>
      <guid>https://dev.to/njericooper/storing-local-data-with-javascript-6m9</guid>
      <description>&lt;p&gt;I'm trying to store a table's data locally. I'm a bit confused about where I should store the cells; in an array? Will the array return each cell in the correct row index? How should I set the local data variable if I'm passing rows and a table as the arguments?&lt;/p&gt;

&lt;p&gt;In my code, the table creates a new row from user input. When I refresh, the table goes away. I'd like to keep the table from the previous session. &lt;/p&gt;

&lt;p&gt;Here's what I have so far:&lt;br&gt;
(press the play button to run the code)&lt;/p&gt;


&lt;div class="ltag__replit"&gt;
  &lt;iframe height="550px" src="https://repl.it/@njericooper1/table?lite=true"&gt;&lt;/iframe&gt;
&lt;/div&gt;


</description>
      <category>help</category>
      <category>javascript</category>
      <category>localstorage</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Was So Wrong About Web Accessibility That it's Laughable!</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Fri, 14 Jun 2019 01:00:31 +0000</pubDate>
      <link>https://dev.to/njericooper/a-web-accessibility-cry-for-help-48hm</link>
      <guid>https://dev.to/njericooper/a-web-accessibility-cry-for-help-48hm</guid>
      <description>&lt;p&gt;Yesterday, I got my first ever product based coding challenge. The challenge was to develop a web app that allows for accessible nav bar usage. I used to think that making something web accessible meant that I used a good color scheme. And that’s all. I believed it was that simple. Here's my crappy, old accessibility thought process: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use high contrast between the text and background color. The nav, main content area, and footer counted as one background.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Alt-Text for things I wanted to be indexed. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's incorrect and not what web accessibility is about at all.&lt;/p&gt;

&lt;p&gt;Here's the challenge ToDo's from &lt;a href="https://twitter.com/vetswhocode"&gt;VetsWhoCode's&lt;/a&gt; "code-challenge" slack channel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add correct ARIA rules &lt;/li&gt;
&lt;li&gt;Ensure text is a readable size
&lt;/li&gt;
&lt;li&gt;make the tabs on the navigation bar focusable &lt;/li&gt;
&lt;li&gt;Foreground/Background color ratio is at least 4:1&lt;/li&gt;
&lt;li&gt;Make sure that there is action to let users know which parts of the navigation bar is interactive&lt;/li&gt;
&lt;li&gt;Ensure that drop-down is focusable, also dismissable while on hover/focus. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I was an hour late seeing the challenge and noticed no one had posted solutions. I wanted to be the first student to get something up that worked. I dove into the deep science of web accessibility protocols, rules, and tools. Here's what I've learned so far:&lt;/p&gt;

&lt;p&gt;ARIA stands for Accessible Rich Internet Applications. These applications assign roles, controls, and state definitions. ARIA is a set of attributes that work with a subset of the DOM known as the accessibility tree. The accessibility tree is not seen. It is keyboard controllable and screen reader friendly. It can also have nonvisible features that provide an even more unique experience. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z3_7tGo3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4qbw1xae6y91t4rw2skz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z3_7tGo3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4qbw1xae6y91t4rw2skz.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ARIA supplements HTML by telling the accessibility tree where items are. The ability to interact with a web page element is also indexed.  Here's an example of a nav bar with ARIA roles, tabindex, and the expanded attribute. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bcb4M3Mq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vm7bn57hlet5agl5414z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bcb4M3Mq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vm7bn57hlet5agl5414z.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tabindex gives the user the ability to tab over to and select menu items with their keyboards. The values that tabindex can be set to determine which order the items are listed in. &lt;/p&gt;

&lt;p&gt;Aria-roles lets the accessibility tree know what functionality an element has. What if I used an icon as a button? I would set the role="button".&lt;/p&gt;

&lt;p&gt;For the challenge, I had to create a dropdown nested inside of the nav bar. I used aria-expanded="false" as a default state for the items I did not want visible until the user interacts with it. Expanded true false is a unique attribute that calls for toggling using JavaScript. Here's a sample of a function that accesses two HTML elements and sets their attributes: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rb2aRu-9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l4r4scz96092x964p98z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rb2aRu-9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l4r4scz96092x964p98z.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This function passes two arguments; "dropDown" and "dropDownParent". The arguments go through an if/else loop that changes the CSS visibility state of the drop down.  The truth or falseness of aria-expanded is also changed at the same time. &lt;/p&gt;

&lt;p&gt;The corresponding CSS for the focused, active, and hovered states set the drop down to visible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qGNEOjch--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/aa5kpob56eef6jb08fd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qGNEOjch--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/aa5kpob56eef6jb08fd7.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are better working examples of ARIA and web accessibility. Although its a work in progress, check out my navbar on CodePen.&lt;/p&gt;

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

&lt;p&gt;I still haven't completed the challenge. I would like to discuss and learn more about how to provide the best user experiences to all users. Please tell me stories about and share examples of how you've used ARIA. &lt;/p&gt;

&lt;p&gt;Where I learned about ARIA roles:&lt;br&gt;
&lt;a href="https://www.w3.org/WAI/PF/aria/states_and_properties#aria-controls"&gt;https://www.w3.org/WAI/PF/aria/states_and_properties#aria-controls&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA"&gt;https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=qdB8SRhqvFc"&gt;https://www.youtube.com/watch?v=qdB8SRhqvFc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coding Challenge from #VetsWhoCode's slack channel. They're a veteran-owned non-profit that teaches veterans JavaScript. Learn more about them, apply for their program, or donate here: &lt;a href="http://www.vetswhocode.io"&gt;www.vetswhocode.io&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/intent/user?screen_name=@njericooper"&gt;Reach out to me on Twitter&lt;/a&gt; &lt;br&gt;
&lt;/p&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U6Ebl0kv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/tweet_video_thumb/D89-CNNWwAEg5dG.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--fmSzl1yw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1039158342478786560/CvkRvMDe_normal.jpg" alt="Njeri Cooper profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Njeri Cooper
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/njericooper"&gt;@njericooper&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B8bbACBj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-99c56e7c338b4d5c17d78f658882ddf18b0bbde5b3f42f84e7964689e7e8fb15.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      My latest cry for help includes a 5-day obsessive-compulsive water fast over a book and an unfinished code challenge. Read or watch about it in my latest post &lt;a href="https://t.co/n5cEM1q0Kl"&gt;dev.to/njericooper/a-…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      01:00 AM - 14 Jun 2019
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1139336874135293954" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1139336874135293954" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1139336874135293954" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      0
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>webaccessibility</category>
      <category>aria</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Responsive Contact Page with Animated Email Input</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Fri, 07 Jun 2019 20:20:07 +0000</pubDate>
      <link>https://dev.to/njericooper/responsive-contact-page-with-animated-email-input-5fda</link>
      <guid>https://dev.to/njericooper/responsive-contact-page-with-animated-email-input-5fda</guid>
      <description>&lt;p&gt;I used to wonder how important it was to have individual pages versus a single scroll site. After learning how the DOM worked, I realized that pages are better for search engine indexing. &lt;/p&gt;

&lt;p&gt;A functional contact page usually has:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A form where visitors can message you &lt;/li&gt;
&lt;li&gt;An email address&lt;/li&gt;
&lt;li&gt;Your social media handles&lt;/li&gt;
&lt;li&gt;Your business location (or at least your country)&lt;/li&gt;
&lt;li&gt;Necessary information including hours of operation &lt;/li&gt;
&lt;li&gt;Any other form of contact&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This contact page is simple and responsive for mobile. Check out the code below. &lt;/p&gt;

&lt;h3&gt;
  
  
  HTML:
&lt;/h3&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%2Fpvjw12biic7jor0qwgdf.png" 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%2Fpvjw12biic7jor0qwgdf.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS:
&lt;/h3&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%2Fcysftzksdo7bgzv7nfa3.png" 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%2Fcysftzksdo7bgzv7nfa3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Check it out on CodePen:
&lt;/h3&gt;

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

&lt;p&gt;I love learning and connecting. If you have any tips to share, please comment below or reach out on &lt;a href="https://twitter.com/njericooper" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If you haven't checked out the previous parts of "Building a Blog", check out parts 1, 2, and 3:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/njericooper" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F146740%2F4594f8c8-9c70-4b62-9053-0b7797fd3459.jpg" alt="njericooper"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/njericooper/flexbox-blog-part-1-the-nav-bar-442l" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;CSS Flexbox Nav Bar - Building a Blog, Part 1&lt;/h2&gt;
      &lt;h3&gt;Njeri Cooper ・ May 16 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#css&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#flexbox&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/njericooper" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F146740%2F4594f8c8-9c70-4b62-9053-0b7797fd3459.jpg" alt="njericooper"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/njericooper/css-flexbox-hero-image-building-a-blog-part-2-2mnl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;CSS Flexbox Hero Image with Parallax Scroll - Building a Blog, Part 2&lt;/h2&gt;
      &lt;h3&gt;Njeri Cooper ・ May 23 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#css&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#flexbox&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/njericooper" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F146740%2F4594f8c8-9c70-4b62-9053-0b7797fd3459.jpg" alt="njericooper"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/njericooper/javascript-image-carousel-building-a-blog-part-3-3oa0" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;CSS Flexbox Javascript Image Slider - Building a Blog, Part 3&lt;/h2&gt;
      &lt;h3&gt;Njeri Cooper ・ May 30 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#flexbox&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1137095145889914886-804" src="https://platform.twitter.com/embed/Tweet.html?id=1137095145889914886"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1137095145889914886-804');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1137095145889914886&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>flexbox</category>
      <category>codepen</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS Flexbox Javascript Image Slider - Building a Blog, Part 3</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Thu, 30 May 2019 20:45:46 +0000</pubDate>
      <link>https://dev.to/njericooper/javascript-image-carousel-building-a-blog-part-3-3oa0</link>
      <guid>https://dev.to/njericooper/javascript-image-carousel-building-a-blog-part-3-3oa0</guid>
      <description>&lt;p&gt;In opposed to building a smooth scroll, single-page site, this week I added separate pages for my blog. This javascript carousel uses simple indexing logic. The images include CSS for overlay text and the HTML is easy to expand on and adapt to your own project. Here's the code I used:&lt;/p&gt;

&lt;h3&gt;
  
  
  HTML
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faha4pyle2mjbkveg7mpn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faha4pyle2mjbkveg7mpn.png" width="800" height="842"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before, I used the CSS "background-image" property for all my images until I learned that was poor for SEO. This time, I embedded the images into the HTML instead of adding their URLs in the CSS.&lt;/p&gt;

&lt;p&gt;In the "plant-carousel" container, I added another div with utility classes. Utility classes hold properties that may appear in more that one place on a website. (For example, if I wanted all headers to be 20px above paragraph text, I would make a "space" class. In my CSS, I would use the "." selector to style the class like this: .space{ padding-bottom: 20px;}) &lt;/p&gt;

&lt;p&gt;The utility classes I made add sliding and fading animations. We'll take a look at what those classes do in the CSS and JS files. For added ease in styling the text, I gave the captions their own class. Once I closed the carousel div, I added tags for the next and previous arrows. Below the images, I created a container for indexing. This container holds the individual dots that represent each image's place.&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12e62orgujnciaizvuwm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12e62orgujnciaizvuwm.png" width="369" height="1947"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the captions will overlay the images, I added a flex display to the "plant-caption" class. I centered everything and made sure the width was 100% so that it will span the full width of any screen. The "plant-carousel" class is styled in a flex row to keep the arrows and captions horizontally aligned in the container.&lt;/p&gt;

&lt;p&gt;The styling for the images and the arrows is pretty standard. I want to highlight the "fade" and "slide" classes before I move onto the moving pieces of Javascript. "slide" has one property with the sole purpose of keeping all the images hidden until they get called to show. I struggled with a cluttered screen until I figured out how this one line could fit into an image slider. I set the display to "none" and BOOM. When the page loads and is re-loaded, the display resets. The images fade onto the screen. It takes 1.5 seconds to bring them from 0.4 opacity to a completely visible 1 opacity property setting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Javascript
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vbziutczg6zvyepn1rw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vbziutczg6zvyepn1rw.png" width="800" height="813"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There has to at least be one image in the slider for it to work, so I set a variable to hold the place. Next, I defined what the next slide would be. It sets value of the previous slide to the current slide's indexed value plus the next slide's value. It looks like this when extended:&lt;br&gt;
slideIndex = slideIndex + n (n represents the showing images in the slide's index which is also 1). &lt;/p&gt;

&lt;p&gt;"currentSlide" sets whichever slide showing to 1 so that the slider will loop without coming to an end.&lt;/p&gt;

&lt;p&gt;The "showSlides" function increases the showing slide along with its corresponding. The slides are set to "active" when the next or previous button is pressed.&lt;/p&gt;

&lt;p&gt;TL:DR Check out the CodePen of an image carousel I made using Javascript and flexbox. &lt;/p&gt;

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

&lt;p&gt;Connect with me on &lt;a href="https://twitter.com/njericooper"&gt;Twitter&lt;/a&gt; to talk more dev stuff. If you haven't checked out the previous parts of "Creating a Blog", check out part 1 and part 2:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/njericooper" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zjPl5RJb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://media.dev.to/cdn-cgi/image/width%3D150%2Cheight%3D150%2Cfit%3Dcover%2Cgravity%3Dauto%2Cformat%3Dauto/https%253A%252F%252Fdev-to-uploads.s3.amazonaws.com%252Fuploads%252Fuser%252Fprofile_image%252F146740%252F4594f8c8-9c70-4b62-9053-0b7797fd3459.jpg" alt="njericooper"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/njericooper/flexbox-blog-part-1-the-nav-bar-442l" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;CSS Flexbox Nav Bar - Building a Blog, Part 1&lt;/h2&gt;
      &lt;h3&gt;Njeri Cooper ・ May 16 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#css&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#flexbox&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/njericooper" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zjPl5RJb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://media.dev.to/cdn-cgi/image/width%3D150%2Cheight%3D150%2Cfit%3Dcover%2Cgravity%3Dauto%2Cformat%3Dauto/https%253A%252F%252Fdev-to-uploads.s3.amazonaws.com%252Fuploads%252Fuser%252Fprofile_image%252F146740%252F4594f8c8-9c70-4b62-9053-0b7797fd3459.jpg" alt="njericooper"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/njericooper/css-flexbox-hero-image-building-a-blog-part-2-2mnl" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;CSS Flexbox Hero Image with Parallax Scroll - Building a Blog, Part 2&lt;/h2&gt;
      &lt;h3&gt;Njeri Cooper ・ May 23 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#css&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#flexbox&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1133802471871176706-720" src="https://platform.twitter.com/embed/Tweet.html?id=1133802471871176706"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1133802471871176706-720');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1133802471871176706&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>flexbox</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>CSS Flexbox Hero Image with Parallax Scroll - Building a Blog, Part 2</title>
      <dc:creator>Njeri Cooper</dc:creator>
      <pubDate>Thu, 23 May 2019 16:40:14 +0000</pubDate>
      <link>https://dev.to/njericooper/css-flexbox-hero-image-building-a-blog-part-2-2mnl</link>
      <guid>https://dev.to/njericooper/css-flexbox-hero-image-building-a-blog-part-2-2mnl</guid>
      <description>&lt;p&gt;Flexbox is a CSS tool used to layout parts of pages on the web in either a row or column. In my previous post, I highlighted some key aspects of flexbox and how to use it to make a nav bar for a  blog. Check out the post &lt;a href="https://dev.to/njericooper/flexbox-blog-part-1-the-nav-bar-442l"&gt;here.&lt;/a&gt; I added a media query that turns the bar layout into a hamburger menu for screens smaller than 768px. &lt;a href="https://codepen.io/njericooper/pen/rgJZBo" rel="noopener noreferrer"&gt;Check out the code for the responsive flexbox nav + hamburger menu here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Below the menu, a site usually has some imagery or headlining text elements to intro the content on the page. For my blog, I created a flexbox hero image with a parallax scroll. Parallax is an effect that fixes a part of a webpage to the background while other elements scroll over it. &lt;/p&gt;

&lt;p&gt;Here's the code I used for my Hero Image:&lt;/p&gt;

&lt;h3&gt;
  
  
  HTML:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpftmri8t97trfiae9nyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpftmri8t97trfiae9nyk.png" alt="made with Carbon" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddylnt7co9ad9dl8ir3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddylnt7co9ad9dl8ir3v.png" alt="flexbox parallax hero image" width="800" height="723"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created a div tag with a class "hero-image" to be the container for the image, text, and scroll effect. This container's CSS displays flexbox in a column. The result affects the text and any other elements put inside of the div with the "hero-image" class.&lt;/p&gt;

&lt;h4&gt;
  
  
  The background image
&lt;/h4&gt;

&lt;p&gt;For design purposes, I created a 0.5 linear-gradient to put over the image to help the text stand out. The image is set to not repeat, to cover the full width, height and fixed to the center of its container. The image will take up 50% of the screen, but for smaller devices, I've set the minimum height to 15em (or 240px).&lt;/p&gt;

&lt;h4&gt;
  
  
  The text
&lt;/h4&gt;

&lt;p&gt;I set both the header and sub-text to align center by editing the "hero-text" class.&lt;/p&gt;

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

&lt;p&gt;If you have other cool implications of flexbox,&lt;a href="https://twitter.com/intent/user?screen_name=@njericooper" rel="noopener noreferrer"&gt;reach out to me on Twitter&lt;/a&gt; &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1131599514538786816-273" src="https://platform.twitter.com/embed/Tweet.html?id=1131599514538786816"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1131599514538786816-273');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1131599514538786816&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>css</category>
      <category>flexbox</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
