<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Bootstrap - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Bootstrap - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 16:29:39 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/bootstrap/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Create a Landing Page with Bootstrap 5 and Context7 MCP AI ]]>
                </title>
                <description>
                    <![CDATA[ What if you could build a responsive and stunning landing page in minutes, with little to no coding? Well, AI tools like Context7 MCP make it possible to automate design tasks and seamlessly integrate them with powerful frameworks like Bootstrap 5. I... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/create-a-landing-page-with-bootstrap-5-and-context7-mcp-ai/</link>
                <guid isPermaLink="false">68e413e6f01f4d585b1f9e1b</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Bootstrap 5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ AI ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Abhijeet Dave ]]>
                </dc:creator>
                <pubDate>Mon, 06 Oct 2025 19:09:26 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759776218071/dce01b69-3ae9-46da-b4a4-e9a98e42f5d1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>What if you could build a responsive and stunning landing page in minutes, with little to no coding? Well, AI tools like Context7 MCP make it possible to automate design tasks and seamlessly integrate them with powerful frameworks like Bootstrap 5.</p>
<p>In this article, you’ll learn how to effortlessly create a modern and responsive landing page using Context7 MCP and Bootstrap 5 by simply providing prompts - no expert coding required!</p>
<p>Landing pages are the cornerstone of online success. They directly influence conversion rates and play a crucial role in lead generation. But creating an effective landing page that looks great across all devices can be a daunting task. That’s where AI-powered tools can help, making it easier than ever to build a landing page that’s both visually appealing and responsive.</p>
<h2 id="heading-table-of-content">Table of Content</h2>
<ul>
<li><p><a class="post-section-overview" href="#heading-prerequisites">Prerequisites</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-leveraging-ai-for-bootstrap-5-landing-page-code-generation">Leveraging AI for Bootstrap 5 Landing Page Code Generation</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-what-is-bootstrap">What is Bootstrap?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-what-is-mcp">What is MCP?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-basic-use-case-of-context7-in-mcp-for-bootstrap">Basic Use Case of Context7 in MCP for Bootstrap</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-use-context7-mcp-for-optimal-results-with-bootstrap-5">How to Use Context7 MCP for Optimal Results with Bootstrap 5</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-step-by-step-build-ai-powered-landing-page-with-bootstrap-5-and-context7-mcp">Step-by-Step Build: AI-Powered Landing Page with Bootstrap 5 and Context7 MCP</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-set-up-context7-mcp-in-vs-code">How to Set Up Context7 MCP in VS Code</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-instructions-for-content-generation-and-confirmation-process">Instructions for Content Generation and Confirmation Process</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-methods-for-building-a-landing-page-with-ai">Methods for Building a Landing Page with AI</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></p>
</li>
</ul>
<h2 id="heading-prerequisites">Prerequisites</h2>
<p>Before diving into the tutorial, make sure you have the following:</p>
<ul>
<li><p>Basic understanding of HTML, CSS, and JavaScript.</p>
</li>
<li><p>Bootstrap 5: Familiarity with this front-end framework is essential.</p>
</li>
<li><p>VS Code: A modern code editor like Visual Studio Code.</p>
</li>
<li><p>Node.js: Installed to run server-side operations.</p>
</li>
<li><p>Context7 MCP: A basic understanding of this AI-driven tool for managing design systems.</p>
</li>
</ul>
<h2 id="heading-leveraging-ai-for-bootstrap-5-landing-page-code-generation">Leveraging AI for Bootstrap 5 Landing Page Code Generation</h2>
<p>Building a landing page traditionally requires crafting HTML and CSS from scratch, which can be labor-intensive and prone to inconsistencies. That’s where AI can be helpful.</p>
<p>Tools like Context7 MCP &amp; VS Code complement this workflow by accelerating the process: with a simple prompt such as “feature card with icon and button,” it produces ready-to-use code snippets that integrate seamlessly with Bootstrap 5’s grid system and styling principles.</p>
<p>This allows developers to iterate quickly, refine their designs, and allocate more effort toward unique content and user-centric refinements.</p>
<h3 id="heading-benefits-of-using-ai-for-bootstrap-code-generation">Benefits of Using AI for Bootstrap Code Generation:</h3>
<ol>
<li><p><strong>Speed</strong>: Generate responsive, well-structured code in seconds.</p>
</li>
<li><p><strong>Efficiency</strong>: Automates boilerplate code, letting developers focus on higher-level tasks.</p>
</li>
<li><p><strong>Consistency</strong>: Ensures all generated components align with Bootstrap’s standards.</p>
</li>
<li><p><strong>Customization</strong>: Provides flexibility to tailor components to your needs.</p>
</li>
<li><p><strong>Improved and Up-to-Date AI-Generated Code</strong>: The AI follows structured guidelines, ensuring the generated code is current and accurate.</p>
</li>
</ol>
<h3 id="heading-how-ai-revolutionizes-bootstrap-development">How AI Revolutionizes Bootstrap Development</h3>
<p>AI-driven tools like Context7 MCP are not just for developers, they make web development accessible to everyone, even those without coding expertise.</p>
<p>Small business owners, digital creators, and freelancers can now create professional-grade landing pages with just a few prompts, allowing them to bring their visions to life without a steep learning curve.</p>
<h2 id="heading-what-is-bootstrap">What is Bootstrap?</h2>
<p>Bootstrap 5 is a powerful, open-source front-end framework that helps developers build responsive websites quickly. It provides a comprehensive set of components, a flexible grid system, and utility classes, making it easy to design modern, mobile-first websites with minimal effort.</p>
<p>Bootstrap is widely used for developing responsive, mobile-first websites. It offers a collection of reusable tools and components, such as navigation bars, forms, buttons, and more, which can be easily customized to meet specific project requirements.</p>
<h3 id="heading-why-choose-bootstrap-5-for-landing-pages">Why Choose Bootstrap 5 for Landing Pages?</h3>
<p>Bootstrap 5’s mobile-first approach, combined with its responsive grid system, makes it the go-to choice for building landing pages that perform seamlessly across all screen sizes.</p>
<p>The grid system, based on flexbox, enables designers to create fluid layouts that adapt to the user's viewport, ensuring that landing pages look polished on any device. With numerous utility classes for spacing, typography, and colors, developers can style pages quickly, reducing the need for custom CSS.</p>
<p>Additionally, Bootstrap 5 introduces modern CSS variables, enabling developers to easily adjust themes and style elements dynamically, perfect for projects that require quick visual updates.</p>
<p><strong>Key Bootstrap 5 Benefits for Landing Pages:</strong></p>
<ul>
<li><p><strong>Mobile-First Design</strong>: Built to prioritize mobile responsiveness, ensuring seamless performance across all devices, from phones to desktops.</p>
</li>
<li><p><strong>Extensive Component Library</strong>: A rich set of reusable, customizable components, such as buttons, alerts, forms, navigation bars, and more. This streamlines development and reduces the need for custom code.</p>
</li>
<li><p><strong>Responsive Grid System</strong>: The flexbox-based grid ensures that layouts are flexible, adaptive, and easy to modify for various screen sizes.</p>
</li>
<li><p><strong>Utility Classes</strong>: Bootstrap 5 includes a comprehensive set of utility classes for handling spacing, alignment, typography, and visibility, speeding up the styling process.</p>
</li>
<li><p><strong>Live Documentation &amp; Community Support</strong>: Bootstrap 5 offers detailed and interactive documentation, backed by a large, active community for support and resources.</p>
</li>
</ul>
<h2 id="heading-what-is-mcp"><strong>What is MCP?</strong></h2>
<p>MCP stands for Model Context Protocol. It is an open and standardized protocol designed to facilitate the interaction between large language models (LLMs) and external applications, data sources, and tools.</p>
<p>MCP enables seamless integration and contextualization, providing a uniform way for AI models to receive and understand context from various sources.</p>
<p>MCP works similarly to a universal connector, much like how USB-C serves as a common interface for connecting various devices.</p>
<p>Just as USB-C simplifies connectivity across devices, MCP streamlines the integration of LLMs with different data sources and services, ensuring smooth communication and enhancing the overall functionality of AI models.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758604936768/57e6f7b3-72c8-4c44-ae18-63bcb74c82d9.png" alt="MCP Structure" class="image--center mx-auto" width="1508" height="815" loading="lazy"></p>
<p>MCP empowers developers and organizations to build intelligent agents and complex workflows by offering the following:</p>
<ul>
<li><p><strong>Pre-built Integrations</strong>: A growing list of integrations that enable your LLM to plug into popular data sources, tools, and services without the need for custom development.</p>
</li>
<li><p><strong>Custom Integration Framework</strong>: A standardized way to create custom connections between LLMs and external services, ensuring flexibility and scalability across different use cases.</p>
</li>
<li><p><strong>Open Protocol</strong>: MCP is open-source, meaning anyone can implement and utilize it, promoting wider adoption and community-driven growth.</p>
</li>
<li><p><strong>Context Portability</strong>: MCP allows the transfer of context between various applications, making it easy to switch between services while maintaining the same level of contextual awareness across systems.</p>
</li>
</ul>
<p>By using MCP, you can build powerful AI-driven applications, automate complex workflows, and create more context-aware models that can interact seamlessly with the world around them.</p>
<h2 id="heading-basic-use-case-of-context7-in-mcp-for-bootstrap"><strong>Basic Use Case of Context7 in MCP for Bootstrap</strong></h2>
<p>When working with Bootstrap, one of the biggest challenges developers face is ensuring their code stays up-to-date with the latest version of the framework.</p>
<p>Bootstrap, like many modern front-end frameworks, undergoes frequent updates, and without access to version-specific documentation, LLMs (Large Language Models) may generate outdated or incorrect code, especially when dealing with new components or utility classes introduced in recent versions.</p>
<p>This can lead to frustrating issues, such as hallucinated code or incorrect implementation of new Bootstrap features. Manual efforts to update documentation or reference various sources are often time-consuming and inefficient, with the added challenge of keeping track of specific version differences across the framework’s evolution.</p>
<h3 id="heading-the-solution-context7-for-bootstrap">The Solution: Context7 for Bootstrap</h3>
<blockquote>
<p>Clean, version-specific Bootstrap documentation for accurate, up-to-date code generation.</p>
</blockquote>
<p>Context7 eliminates these issues by providing real-time, version-specific documentation directly to your AI tools, ensuring they always have the most accurate and relevant Bootstrap code. With Context7, you can be confident that the AI-generated code is fully aligned with the current version of Bootstrap, streamlining the development process and ensuring upto the mark implementation of the framework.</p>
<p><strong>Key Features of Context7 for Bootstrap:</strong></p>
<ul>
<li><p><strong>Version-Specific Bootstrap Documentation</strong>: Always up-to-date with the latest Bootstrap version, ensuring accurate integration of new classes, components, and utilities.</p>
</li>
<li><p><strong>Real, Working Bootstrap Code</strong>: Extracts working examples directly from official Bootstrap documentation, saving you time and effort.</p>
</li>
<li><p><strong>Concise and Relevant Information</strong>: Filters out unnecessary details and ensures you receive only the most useful snippets for your project.</p>
</li>
<li><p><strong>Free for Personal Use</strong>: Access the powerful Context7 tool without any cost for personal development and experimentation.</p>
</li>
<li><p><strong>MCP Integration</strong>: Seamlessly integrates with Model Context Protocol (MCP) to provide context-aware AI interactions, making it easier for developers to work with Bootstrap in real-time.</p>
</li>
</ul>
<h2 id="heading-how-to-use-context7-mcp-for-optimal-results-with-bootstrap-5">How to Use Context7 MCP for Optimal Results with Bootstrap 5</h2>
<p>When building responsive and modern landing pages, developers often face limitations with tools like Lovable and Bolt. These platforms typically provide pre-built templates, but they can restrict customization and integration, especially when working with powerful front-end frameworks like Bootstrap 5.</p>
<p>Unlike traditional solutions, Context7 MCP integrates with the most current official Bootstrap 5 documentation, providing real-time access to the latest framework updates, components, and best practices.</p>
<p>This feature is essential, as it ensures that the generated code adheres to Bootstrap 5’s latest standards, offering a far more flexible and accurate approach than static templates or LLM-based solutions, which might not reflect the most recent changes in Bootstrap 5.</p>
<p><strong>With Context7 MCP, you gain:</strong></p>
<ul>
<li><p><strong>Flexibility</strong>: Effortlessly generate custom Bootstrap 5 components tailored to your specific needs, such as navigation bars, buttons, or modals.</p>
</li>
<li><p><strong>Seamless Bootstrap 5 Integration</strong>: Fully integrate with Bootstrap 5’s responsive grid system and design conventions, ensuring your landing pages are both functional and adaptive to different screen sizes.</p>
</li>
<li><p><strong>Consistency</strong>: Maintain design consistency across your project without compromising on customization, leveraging the latest components and utilities directly from Bootstrap 5.</p>
</li>
<li><p><strong>Up-to-Date Components</strong>: Always have access to the latest Bootstrap 5 features and updates from MCP, ensuring that your landing pages are current with the latest changes in the framework.</p>
</li>
</ul>
<h3 id="heading-how-context7-mcp-enhances-productivity">How <strong>Context7 MCP</strong> Enhances Productivity</h3>
<p>By incorporating Context7 MCP into your development workflow, you streamline the process of building responsive landing pages and web applications.</p>
<p>Context7 MCP ensures that all your components align with latest Bootstrap 5 standards, making it easier to maintain consistency throughout your project.</p>
<p>This allows you to quickly adapt to the latest Bootstrap 5 updates, leveraging its latest features without the risk of introducing errors or inconsistencies.</p>
<h2 id="heading-step-by-step-build-ai-powered-landing-page-with-bootstrap-5-and-context7-mcp">Step-by-Step Build: AI-Powered Landing Page with Bootstrap 5 and Context7 MCP</h2>
<p>In this guide, we will walk through building an engaging <strong>AI-powered landing page</strong> using <strong>Context7 MCP</strong> and <strong>Bootstrap 5</strong>. We will cover everything from setting up the project environment to generating responsive Bootstrap components and integrating AI-powered elements to enhance user experience.</p>
<h3 id="heading-set-up-the-project-environment">Set Up the Project Environment</h3>
<p>Before we dive into creating the landing page, we’ll start by setting up the project structure and ensuring that we have Bootstrap 5 integrated. Additionally, we will leverage Context7 MCP to automate the generation of responsive components and layouts for the landing page.</p>
<h4 id="heading-1-set-up-the-project-folder">1. Set up the project folder:</h4>
<pre><code class="lang-bash">mkdir my-landing-page
<span class="hljs-built_in">cd</span> my-landing-page
</code></pre>
<p>Create the <code>index.html</code> file for the landing page layout:</p>
<pre><code class="lang-bash">touch index.html
</code></pre>
<p>Initialize the project with <code>npm</code>:</p>
<pre><code class="lang-bash">npm init -y
</code></pre>
<p>This will create a <code>package.json</code> file for the project.</p>
<h4 id="heading-2-add-bootstrap-5-to-the-project">2. Add Bootstrap 5 to the project:</h4>
<p>You can include Bootstrap 5 in two ways: by downloading the compiled CSS and JS files or by using a CDN. For simplicity, we’ll use the CDN links.</p>
<p>In the <code>&lt;head&gt;</code> section of your <code>index.html</code>, add:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"&lt;https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css&gt;"</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span>&gt;</span>
</code></pre>
<p>At the end of the <code>&lt;body&gt;</code> section, add:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"&lt;https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js&gt;"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></pre>
<p>This ensures that Bootstrap 5 is integrated into the project for layout and component styling.</p>
<h4 id="heading-3-basic-structure-of-the-landing-page">3. Basic Structure of the Landing Page:</h4>
<p>Start by setting up the basic layout in your <code>index.html</code> file:</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Landing Page<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
    <span class="hljs-comment">&lt;!-- Bootstrap 5 CDN --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"&lt;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css&gt;"</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-comment">&lt;!-- Landing Page Content --&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"&lt;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js&gt;"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>This simple structure sets the stage for a responsive design. Feel free to modify the content as per your requirements.</p>
<h2 id="heading-how-to-set-up-context7-mcp-in-vs-code">How to Set Up <strong>Context7</strong> MCP in VS Code</h2>
<p>Integrating Context7 MCP into your project is an essential step to streamline your development process, allowing seamless interaction with large language models (LLMs) and ensuring the generation of accurate, context-driven code. Below is a step-by-step guide on how to set up Context7 MCP in VS Code.</p>
<h3 id="heading-1-one-click-setup-optional"><strong>1. One-Click Setup (Optional)</strong></h3>
<p>For a quick and easy installation, you can use the one-click setup to install Context7 MCP in VS Code. Simply click the link below to initiate the installation:</p>
<p><a target="_blank" href="https://insiders.vscode.dev/redirect?url=vscode:mcp%2Finstall?%7B%22name%22:%22context7%22,%22command%22:%22npx%22,%22args%22:%5B%22-y%22,%22@upstash%2Fcontext7-mcp@latest%22%5D%7D&amp;utm_source=chatgpt.com">Install Context7 MCP in VS Code</a></p>
<p>This will automatically install Context7 MCP for you within VS Code, enabling it for use in your development environment.</p>
<h3 id="heading-2-add-mcp-configuration-to-vs-code"><strong>2. Add MCP Configuration to VS Code</strong></h3>
<p>Once Context7 MCP is installed, you’ll need to configure it within VS Code. This step ensures that VS Code communicates with the MCP server to fetch context-driven documentation and code examples.</p>
<p>To add the configuration, follow these steps:</p>
<ol>
<li><p>Open the <code>settings.json</code> file in VS Code by navigating to <code>File</code> &gt; <code>Preferences</code> &gt; <code>Settings</code> and clicking the {} Open Settings (JSON) icon.</p>
</li>
<li><p>Add the following MCP configuration to the settings file:</p>
</li>
</ol>
<pre><code class="lang-json"><span class="hljs-string">"mcp"</span>: {
  <span class="hljs-attr">"servers"</span>: {
    <span class="hljs-attr">"context7"</span>: {
      <span class="hljs-attr">"type"</span>: <span class="hljs-string">"http"</span>,
      <span class="hljs-attr">"url"</span>: <span class="hljs-string">"&lt;https://mcp.context7.com/mcp&gt;"</span>,
      <span class="hljs-attr">"headers"</span>: {
        <span class="hljs-attr">"CONTEXT7_API_KEY"</span>: <span class="hljs-string">"YOUR_API_KEY"</span>
      }
    }
  }
}
</code></pre>
<p>Replace <code>"YOUR_API_KEY"</code> with your actual API key from Context7. This key will authenticate your request and allow access to MCP services.</p>
<h3 id="heading-3-local-server-setup"><strong>3. Local Server Setup</strong></h3>
<p>If you prefer running Context7 MCP locally rather than using the hosted version, you can set up a local server. This is especially useful for working in isolated environments or without an internet connection.</p>
<p><strong>To configure Context7 MCP to run locally:</strong></p>
<ol>
<li><p>Open your <code>settings.json</code> file in VS Code.</p>
</li>
<li><p>Add the following configuration:</p>
</li>
</ol>
<pre><code class="lang-json"><span class="hljs-string">"mcp"</span>: {
  <span class="hljs-attr">"servers"</span>: {
    <span class="hljs-attr">"context7"</span>: {
      <span class="hljs-attr">"type"</span>: <span class="hljs-string">"stdio"</span>,
      <span class="hljs-attr">"command"</span>: <span class="hljs-string">"npx"</span>,
      <span class="hljs-attr">"args"</span>: [<span class="hljs-string">"-y"</span>, <span class="hljs-string">"@upstash/context7-mcp"</span>, <span class="hljs-string">"--api-key"</span>, <span class="hljs-string">"YOUR_API_KEY"</span>]
    }
  }
}
</code></pre>
<p>This setup runs Context7 MCP locally by invoking the <code>npx</code> command with the necessary arguments, including your API key.</p>
<h3 id="heading-4-installing-context7-in-other-editors"><strong>4. Installing Context7 in Other Editors</strong></h3>
<p>If you wish to set up Context7 MCP in other code editors, you can follow detailed installation guidelines available in the <a target="_blank" href="https://github.com/upstash/context7?tab=readme-ov-file&amp;utm_source=chatgpt.com#%EF%B8%8F-installation">Context7 Installation Documentation</a>. This resource provides step-by-step instructions for configuring MCP in various environments, ensuring compatibility with your preferred editor.</p>
<h2 id="heading-instructions-for-content-generation-and-confirmation-process">Instructions for Content Generation and Confirmation Process</h2>
<p>To begin generating content with Context7 MCP, you first need to confirm whether you'd like to proceed with the provided context. If you're using the context I've shared, simply click 'Continue' to confirm your choice.</p>
<p>A second confirmation will ensure that you want to generate content based on the prompt provided. Once you click 'Continue', the system will refer to the appropriate context (for example, Bootstrap documentation) and initiate the content generation process.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758609079268/c0767ab9-0950-4055-a875-315e95af8cfb.png" alt="content generation &amp; confirmation process.png" class="image--center mx-auto" width="401" height="409" loading="lazy"></p>
<p><strong>Note:</strong> When writing a prompt and intending to use Context7, make sure to include <code>using context7</code> at the beginning of the prompt. This explicitly directs the AI to generate content based on Model Context Protocol (MCP) and relevant context sources like Bootstrap 5 documentation.</p>
<h3 id="heading-how-to-automate-the-inclusion-of-context7-instructions"><strong>How to Automate the Inclusion of Context7 Instructions</strong></h3>
<p>If you'd like to avoid manually including the <code>using context7</code> instruction in every prompt, you can automate the process by setting default instructions in your project’s configuration files. To do this, add the following instructions to your <code>.github/copilot-instructions.md</code> file in the root directory of your project:</p>
<pre><code class="lang-html">always use context7 with bootstrap
</code></pre>
<h2 id="heading-methods-for-building-a-landing-page-with-ai">Methods for Building a Landing Page with AI</h2>
<h3 id="heading-1-building-a-complete-landing-page-with-a-single-prompt">1. Building a Complete Landing Page with a Single Prompt</h3>
<p>An effective landing page is not just about design, it must provide a seamless, user-friendly experience that immediately captures attention and guides visitors through the content.</p>
<p>By leveraging the flexibility of Bootstrap 5 and the power of the Context7 MCP framework, you can generate a complete, fully responsive landing page that performs well across all devices, both mobile and desktop.</p>
<p>Using a single prompt, you can quickly create a comprehensive layout with all essential sections, streamlining the process while maintaining visual appeal and functional design.</p>
<p><strong>Important Note:</strong> When generating a complete landing page layout, results may vary depending on different environments or agents. While creating a full-page design using a single prompt can yield some results, the precision and consistency may not be as high compared to generating individual sections. For more consistent and accurate results, consider using advanced models like Claude Sonnet 4 to ensure better output quality.</p>
<h4 id="heading-creating-a-responsive-ai-tool-landing-page">Creating a Responsive AI Tool Landing Page</h4>
<p>Here’s a template for building a responsive and dynamic landing page layout using Bootstrap 5, ensuring that all key sections are optimized for both mobile and desktop views:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758609225968/6687f86b-12a2-46c4-b56e-7a7669b49206.png" alt="AI landing page example" class="image--center mx-auto" width="1905" height="934" loading="lazy"></p>
<pre><code class="lang-html">Generate a responsive AI tool landing page layout with Bootstrap 5 featuring the following sections:
- Navigation Bar: Links to other sections of the page.
- Hero Section: A heading, subheading, and a compelling call-to-action button.
- About Section: Introduces the company or product.
- Features Section: Highlights key features and benefits.
- How It Works Section: Explains the process or flow.
- Pricing Section: Showcases pricing plans or offers.
- FAQ Section: Answers common questions and concerns.
- Contact Section: Provides contact details or an inquiry form.
- Footer Section: Includes copyright and additional links.
</code></pre>
<p>This structure ensures a logical flow, starting with an engaging Hero Section, followed by deeper insights into the product (Features, How It Works), and finishing with clear calls to action (Pricing, FAQ, and Contact).</p>
<p><strong>Code Example</strong></p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/smitbhalodiya/embed/LEpMEON" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p> </p>
<p>You can access all the code for this landing page by cloning or downloading the repository:</p>
<p><a target="_blank" href="https://github.com/themeselection/bootstrap-landing-page"><strong>Repository Link</strong></a></p>
<p>For the complete code, including the full layout template, visit the <code>full-prompt-landing-page.html</code> file in the repository directly:</p>
<p><a target="_blank" href="https://github.com/themeselection/bootstrap-landing-page/blob/main/full-prompt-landing-page.html?"><strong>Full Code File</strong></a></p>
<h3 id="heading-2-creating-a-section-by-section-landing-page">2. Creating a Section-by-Section Landing Page</h3>
<p>Building a landing page section by section allows you to focus on each component individually, ensuring precise control over design and functionality.</p>
<p>By structuring your page into distinct sections (such as the hero, features, pricing, and so on), you can tailor the content and style of each part, ensuring that it aligns with your branding and conversion goals.</p>
<p>This method provides greater flexibility and customization, especially when using AI-powered tools like Context7 MCP, as it allows you to generate each section according to specific requirements and design preferences.</p>
<h4 id="heading-create-a-header-and-hero-section-with-ai-prompt">Create a Header and Hero Section with AI Prompt</h4>
<p>The Header and Hero Section are essential for setting the tone of your landing page. The hero section grabs visitors' attention immediately and introduces them to the key value proposition of your AI tool. The header ensures smooth navigation across the page.</p>
<p><strong>Prompt Example:</strong></p>
<p>"Design a full-width hero section with a striking background image or color that highlights the AI tool. Include a compelling tagline that clearly communicates the main benefit of the tool, along with a call-to-action (CTA) button prompting users to 'Get Started' or 'Learn More.' Additionally, create a clean, responsive header section with a navigation bar containing links to: Home, About, Features, Pricing, FAQ, and Contact."</p>
<p><strong>AI Output:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758610136433/ffcdc65b-3643-4db9-adbb-63558913a013.png" alt="header &amp; hero section example" class="image--center mx-auto" width="1905" height="935" loading="lazy"></p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codesandbox.io/embed/clxsvl?view=editor+%2B+preview" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodeSandbox embed" allow="geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media; usb" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin" loading="lazy"></iframe></div>
<p> </p>
<p><strong>Customizing the Style:</strong></p>
<p>To further customize the style, you can adjust the background, font, and button classes either through the prompt or by manually editing the class names in the generated code. With MCP, you can also tweak colors and typography to better align with your brand's design guidelines.</p>
<h4 id="heading-create-an-engaging-about-section-with-ai-prompt">Create an Engaging About Section with AI Prompt</h4>
<p>The About section serves as an introduction to your AI tool, explaining its purpose, key features, and how it benefits users. It should establish trust and clearly communicate what makes your tool unique.</p>
<p><strong>Prompt Example:</strong></p>
<p>"Design an 'About' section with a brief overview of the AI tool. Include a short paragraph explaining the tool’s core features, its purpose, and how it stands out from competitors. Add an image or icon to visually complement the text."</p>
<p><strong>AI Output:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758610832403/11aec6be-b98a-4612-b680-a52748a2b9d6.png" alt="about section example" class="image--center mx-auto" width="1499" height="747" loading="lazy"></p>
<p><strong>Customizing the Style:</strong></p>
<p>You can adjust the background, typography, and button classes to fit your brand's aesthetic. Modify the content to better highlight the unique selling points of your AI tool, ensuring that it resonates with your target audience.</p>
<h4 id="heading-showcase-key-features-with-ai-prompt">Showcase Key Features with AI Prompt</h4>
<p>The Features section is essential for highlighting the core benefits and capabilities of your AI tool. It helps users understand exactly what the tool offers and how it can improve their workflow or solve their problems.</p>
<p><strong>Prompt Example:</strong></p>
<p>"Design a Features section that lists the key features of the AI tool in a visually engaging manner. Include icons or images to represent each feature and provide short, clear descriptions of how each feature benefits the user. Ensure the section is easy to scan and encourages users to explore more."</p>
<p><strong>AI Output:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758610934605/b3246eb3-15dd-4d89-b1bd-7ee465a863d4.png" alt="key features showcase example" class="image--center mx-auto" width="1012" height="764" loading="lazy"></p>
<p><strong>Customizing the Style:</strong></p>
<p>You can easily adjust the icons, typography, and layout using the prompt or by editing the class names in the generated markup. Consider using your brand’s icons or color palette to make the section more visually aligned with your brand identity. You can also tweak the descriptions to focus on the features most important to your target audience.</p>
<h4 id="heading-present-pricing-plans-with-ai-prompt">Present Pricing Plans with AI Prompt</h4>
<p>The Pricing section is crucial for converting visitors into customers. It should clearly display the available pricing options, highlighting the value of each plan and encouraging users to take action. This section should be simple, yet persuasive, and easy to understand.</p>
<p><strong>Prompt Example:</strong></p>
<p>"Design a Pricing section that clearly presents different pricing tiers. Include the plan names, prices, key features, and a clear call-to-action (CTA) button for each plan. Use a comparison table or card layout to make it easy for users to compare options and make an informed decision."</p>
<p><strong>AI Output:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758611081962/078de2d2-238f-4164-a859-300ac284e6c3.png" alt="pricing example" class="image--center mx-auto" width="1241" height="853" loading="lazy"></p>
<p><strong>Customizing the Style:</strong></p>
<p>To tailor the Pricing section to your brand, you can adjust the colors, fonts, and card styles. You can customize the pricing plans to fit your offering, modify the CTA buttons to highlight specific actions (for example, “Start Free Trial” or “Learn More”), and adjust the layout for different screen sizes.</p>
<h4 id="heading-create-an-informative-faq-section-with-ai-prompt">Create an Informative FAQ Section with AI Prompt</h4>
<p>The FAQ section is key to addressing common questions and concerns from potential users, helping them make informed decisions. It should be organized, easy to scan, and provide clear, concise answers. This section can also reduce customer support inquiries by offering quick solutions.</p>
<p><strong>Prompt Example:</strong></p>
<p>"Design a FAQ section that addresses common questions about the AI tool. Use an accordion or collapsible design for better readability, and ensure the answers are concise and informative. Include a clear, inviting heading for the section and format the questions in a way that’s easy to scan."</p>
<p><strong>AI Output:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758611141685/55f196ed-ce62-44ad-93c4-e71d06160084.png" alt="FAQ section example" class="image--center mx-auto" width="1250" height="847" loading="lazy"></p>
<p><strong>Customizing the Style:</strong></p>
<p>You can personalize the FAQ section by adjusting the accordion style, colors, and fonts to match your brand’s theme. You can also modify the questions and answers based on the most common inquiries from your users. For a more dynamic effect, consider adding icons or images next to the questions.</p>
<h4 id="heading-create-an-engaging-contact-section-with-ai-prompt">Create an Engaging Contact Section with AI Prompt</h4>
<p>The Contact section is essential for encouraging visitors to reach out for more information, support, or inquiries. It should be clear, easy to use, and include all necessary contact details, as well as a form for quick communication.</p>
<p><strong>Prompt Example:</strong></p>
<p>"Design a Contact section that includes a contact form with fields for name, email, subject, and message. Ensure the form is simple, easy to fill out, and includes a submit button. Also, provide clear contact details, such as a phone number, email address, and physical location (if applicable)."</p>
<p><strong>AI Output:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758611619369/87e47a01-fddd-48af-9230-f597d40a932a.png" alt="contact section example" class="image--center mx-auto" width="1341" height="809" loading="lazy"></p>
<p><strong>Customizing the Style:</strong></p>
<p>To align the Contact section with your brand’s design, you can modify the colors, fonts, and form styles. Adjust the form fields, buttons, and layout to match the look and feel of your website.</p>
<p>Additionally, you can add custom map integration or contact methods (like social media handles) to further enhance accessibility.</p>
<h4 id="heading-create-a-comprehensive-footer-section-with-ai-prompt">Create a Comprehensive Footer Section with AI Prompt</h4>
<p>The Footer section is often the last thing users see on a page, so it’s essential to include important links, contact details, and legal information. A well-designed footer can help improve site navigation and encourage further engagement with your content.</p>
<p><strong>Prompt Example:</strong></p>
<p>"Design a Footer section that includes key navigation links, such as Privacy Policy, Terms of Service, and social media icons (for example, Facebook, Twitter, LinkedIn). Include your company’s contact details (email, phone) and a copyright notice. The footer should be responsive and neatly organized."</p>
<p><strong>AI Output:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758611686647/47902f6c-2472-4a1e-b2b9-a42c3ebc6414.png" alt="footer example" class="image--center mx-auto" width="1904" height="532" loading="lazy"></p>
<p><strong>Customizing the Style:</strong></p>
<p>To match your brand’s aesthetics, you can adjust the Footer section’s background color, typography, and icon styles. You can also add additional links like your blog, careers page, or a newsletter signup form. Ensure the footer is responsive by checking it on different screen sizes, making adjustments to spacing or layout as needed.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>In this tutorial, we’ve demonstrated how to create a modern, responsive landing page using Bootstrap 5 and integrate Context7 MCP. We also explored different methods for building the landing page, either using a single comprehensive prompt or constructing it section by section.</p>
<p>While a single comprehensive prompt can generate a landing page quickly, building it section by section typically yields better results. This approach allows for greater customization, finer control over each element, and ensures that every section aligns with your overall design vision.</p>
<p>By leveraging Bootstrap 5’s robust grid system and Context7’s AI-driven component generation, you can easily create landing pages that are not only visually appealing but also responsive and functional across all devices. This combination of tools makes the process faster, more efficient, and scalable.</p>
<p>You can also consider using a ready made <a target="_blank" href="https://themeselection.com/item/category/bootstrap-templates/">bootstrap template</a> which comes with pre designed landing pages.</p>
<p><strong>With this setup, you can expect:</strong></p>
<p>Rather than requiring developers to manually write repetitive code for common components, such as navigation bars, feature cards, or grids, VS Code and Context7 automates this process, allowing you to focus on higher-level design decisions.</p>
<p>It also ensures that the generated code is fully responsive and in alignment with latest Bootstrap 5’s framework, providing seamless integration with Bootstrap’s utilities like spacing, alignment, and visibility.</p>
<p>I hope you find this article helpful and worth reading. I have prepared this article with help of <a target="_blank" href="https://github.com/smitbhalodiya">Smit Bhalodiya</a>, a Front End developer with 5+ years of experience in the field.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Customize Bootstrap with Sass ]]>
                </title>
                <description>
                    <![CDATA[ Bootstrap is an awesome CSS framework that can help you create stylish and sleek websites. Some developers and teams find that code written in Bootstrap is easier to maintain than regular CSS, so they prefer Bootstrap to vanilla CSS. But if everyone ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-customize-bootstrap-with-sass/</link>
                <guid isPermaLink="false">66d461734bc8f441cb6df831</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Sass ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Vinod Mathew Sebastian ]]>
                </dc:creator>
                <pubDate>Tue, 21 Jun 2022 20:59:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/06/How_to_customize_Boostrap_with_Sass.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Bootstrap is an awesome CSS framework that can help you create stylish and sleek websites.</p>
<p>Some developers and teams find that code written in Bootstrap is easier to maintain than regular CSS, so they prefer Bootstrap to vanilla CSS.</p>
<p>But if everyone used Bootstrap with its default styles, then every site would look the same – and quickly, the internet would become pretty bland. Fortunately, Bootstrap is also highly customizable.</p>
<h2 id="heading-how-to-customize-bootstrap">How to Customize Bootstrap</h2>
<p>If you're a beginner, you can customize Bootstrap with a custom CSS stylesheet. CSS specificity is important here. You write custom CSS, with the same or higher specificity, and link to it in the head section of your index.html <em>after</em> the line which links to the original Bootstrap CSS.</p>
<pre><code class="lang-typescript">&lt;!-- index.html --&gt;
&lt;head&gt;

    &lt;link rel=<span class="hljs-string">"stylesheet"</span> href=<span class="hljs-string">"./node_modules/bootstrap/dist/css/bootstrap.min.css"</span>&gt;
    &lt;!-- custom CSS should come after Bootstrap CSS --&gt;
    &lt;link rel=<span class="hljs-string">"stylesheet"</span> href=<span class="hljs-string">"./custom.css"</span>

&lt;/head&gt;
</code></pre>
<p>For small tweaks this is OK. But for larger projects, this can be time-consuming and there may be a lot of redundant style declarations. So there has to be another, cleaner, way.</p>
<h3 id="heading-how-to-use-sass-with-bootstrap">How to Use Sass with Bootstrap</h3>
<p>The solution is to use Sass – a CSS preprocessor. Sass is compiled down to CSS before it's used on web pages.</p>
<p>Until Bootstrap version 3.x, you had a choice between CSS preprocessors: Less or Sass. But since version 4, Bootstrap uses only Sass. The source code for the Bootstrap 4 and 5 frameworks is written entirely in Sass, which is a testimony to how mature Sass has become.</p>
<p>You may have heard the tagline, "Sass is CSS with superpowers". If you want to learn Sass, the <a target="_blank" href="https://sass-lang.com">official</a> website is an excellent resource. You can also refer to other tutorials on freeCodeCamp, like this one on <a target="_blank" href="https://www.freecodecamp.org/news/how-to-use-sass-with-css/">how to use Sass with CSS</a>, or this video course on <a target="_blank" href="https://www.freecodecamp.org/news/learn-bootstrap-5-and-sass-by-building-a-portfolio-website/">how to use Sass with Bootstrap 5</a>.</p>
<p>Sass comes with two syntaxes. The older one uses indentation and the newer SCSS syntax (SCSS for Sassy CSS) uses CSS-like curly braces.</p>
<p>SCSS is a superset of CSS. So CSS code saved with a .scss extension (or SCSS interspersed with CSS) is also valid Sass code.</p>
<p>In this tutorial, we are going to use the SCSS version. Whatever the style is, indented Sass or CSS-like SCSS, the Sass compiler will transpile it to vanilla CSS to be used on the browser.</p>
<h3 id="heading-what-we-are-going-to-do-in-this-tutorial">What we are going to do in this tutorial</h3>
<ol>
<li><p>We will change the primary and secondary theme colors Bootstrap ships with.</p>
</li>
<li><p>We will also change the default media breakpoints Bootstrap uses.</p>
</li>
</ol>
<p>Once we can do these, it will become easy to do other customizations.</p>
<h3 id="heading-the-prerequisites">The Prerequisites</h3>
<ol>
<li><p>Node.js with npm or yarn</p>
</li>
<li><p>A code editor, preferably VS Code.</p>
</li>
<li><p>A basic understanding of Sass</p>
</li>
</ol>
<p>Download Bootstrap from the official website: <a target="_blank" href="https://getbootstrap.com">https://getbootstrap.com</a></p>
<p>Since we have Node.js installed, I'm going to use the npm version.</p>
<p><code>npm i bootstrap</code></p>
<p>We also need to install the Sass compiler. We can get the official dart-sass version from <a target="_blank" href="https://sass-lang.com">their website</a>. Whether you're on Windows, Mac, or Linux you just need to download the dart-sass package, unzip it, and add it to the path (environment variables).</p>
<p>There is a npm sass package. Also, there is a <em>Live Sass Compiler</em> VS Code extension with over 2 million installs. Feel free to use whatever Sass compiler you're comfortable with.</p>
<p>Here, we are going to use the npm package: sass.</p>
<p>After downloading Bootstrap, and the Sass compiler, in the <code>node-modules</code> directory, there is a folder named <code>bootstrap</code>.</p>
<p>There are also three folders inside it: <code>dist</code>, <code>js</code>, and <code>scss</code>.</p>
<p>All the compiled CSS is in <code>dist</code>, the Bootstrap JavaScript code in <code>js</code>, and all the Sass files are in the <code>scss</code> folder.</p>
<h3 id="heading-how-to-change-the-primary-and-secondary-theme-colors">How to change the primary and secondary theme colors</h3>
<p>For customization, our idea is to override the .scss files and recompile them.</p>
<p>The official Bootstrap documentation advises against changing the core bootstrap files whenever possible. So we are going to create a custom.scss stylesheet.</p>
<p>And we are going to import all of Bootstrap in the custom.scss file.</p>
<pre><code class="lang-typescript"><span class="hljs-comment">//custom.scss</span>

<span class="hljs-meta">@import</span> <span class="hljs-string">"../node_modules/bootstrap/scss/bootstrap"</span>;
</code></pre>
<p>Variables are suffixed with a <code>!default</code> (a Sass flag) in Bootstrap. The <code>!default</code> flag tells the compiler to set the value only if the value is not defined.</p>
<p>So, we set the variables before the @import directive so that, later, the compiler sets our value instead of the default ones.</p>
<pre><code class="lang-typescript"><span class="hljs-comment">//custom.scss</span>

$primary: teal;
$secondary: green;

<span class="hljs-meta">@import</span> <span class="hljs-string">"../node_modules/bootstrap/scss/bootstrap"</span>;
</code></pre>
<p>We also need an HTML file to preview the results.</p>
<pre><code class="lang-typescript">&lt;!-- index.html --&gt;
&lt;!DOCTYPE html&gt;
&lt;html lang=<span class="hljs-string">"en"</span>&gt;
&lt;head&gt;
    &lt;meta charset=<span class="hljs-string">"UTF-8"</span>&gt;
    &lt;meta http-equiv=<span class="hljs-string">"X-UA-Compatible"</span> content=<span class="hljs-string">"IE=edge"</span>&gt;
    &lt;meta name=<span class="hljs-string">"viewport"</span> content=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;
    &lt;title&gt;Welcome! Customize Bootstrap <span class="hljs-keyword">with</span> Sass&lt;/title&gt;
    &lt;link rel=<span class="hljs-string">"stylesheet"</span> href=<span class="hljs-string">"./node_modules/bootstrap/dist/css/bootstrap.min.css"</span>
&lt;/head&gt;
&lt;body&gt;
 &lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"container"</span> &gt;
 &lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"row"</span>&gt;
    &lt;nav <span class="hljs-keyword">class</span>=<span class="hljs-string">"navbar navbar-expand-lg navbar-light bg-primary"</span>&gt;
        &lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;
          &lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"navbar-brand"</span> href=<span class="hljs-string">"#"</span>&gt;Customize Bootstrap&lt;/a&gt;
          &lt;button <span class="hljs-keyword">class</span>=<span class="hljs-string">"navbar-toggler"</span> <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> data-bs-toggle=<span class="hljs-string">"collapse"</span> data-bs-target=<span class="hljs-string">"#navbarSupportedContent"</span> aria-controls=<span class="hljs-string">"navbarSupportedContent"</span> aria-expanded=<span class="hljs-string">"false"</span> aria-label=<span class="hljs-string">"Toggle navigation"</span>&gt;
            &lt;span <span class="hljs-keyword">class</span>=<span class="hljs-string">"navbar-toggler-icon"</span>&gt;&lt;/span&gt;
          &lt;/button&gt;
          &lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"collapse navbar-collapse"</span> id=<span class="hljs-string">"navbarSupportedContent"</span>&gt;
            &lt;ul <span class="hljs-keyword">class</span>=<span class="hljs-string">"navbar-nav me-auto mb-2 mb-lg-0"</span>&gt;
              &lt;li <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-item"</span>&gt;
                &lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-link active"</span> aria-current=<span class="hljs-string">"page"</span> href=<span class="hljs-string">"#"</span>&gt;Home&lt;/a&gt;
              &lt;/li&gt;
              &lt;li <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-item"</span>&gt;
                &lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-link"</span> href=<span class="hljs-string">"#"</span>&gt;Link&lt;/a&gt;
              &lt;/li&gt;
              &lt;li <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-item dropdown"</span>&gt;
                &lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-link dropdown-toggle"</span> href=<span class="hljs-string">"#"</span> id=<span class="hljs-string">"navbarDropdown"</span> role=<span class="hljs-string">"button"</span> data-bs-toggle=<span class="hljs-string">"dropdown"</span> aria-expanded=<span class="hljs-string">"false"</span>&gt;
                  Dropdown
                &lt;/a&gt;
                &lt;ul <span class="hljs-keyword">class</span>=<span class="hljs-string">"dropdown-menu"</span> aria-labelledby=<span class="hljs-string">"navbarDropdown"</span>&gt;
                  &lt;li&gt;&lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"dropdown-item"</span> href=<span class="hljs-string">"#"</span>&gt;Action&lt;<span class="hljs-regexp">/a&gt;&lt;/</span>li&gt;
                  &lt;li&gt;&lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"dropdown-item"</span> href=<span class="hljs-string">"#"</span>&gt;Another action&lt;<span class="hljs-regexp">/a&gt;&lt;/</span>li&gt;
                  &lt;li&gt;&lt;hr <span class="hljs-keyword">class</span>=<span class="hljs-string">"dropdown-divider"</span>&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"dropdown-item"</span> href=<span class="hljs-string">"#"</span>&gt;Something <span class="hljs-keyword">else</span> here&lt;<span class="hljs-regexp">/a&gt;&lt;/</span>li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
              &lt;li <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-item"</span>&gt;
                &lt;a <span class="hljs-keyword">class</span>=<span class="hljs-string">"nav-link disabled"</span> href=<span class="hljs-string">"#"</span> tabindex=<span class="hljs-string">"-1"</span> aria-disabled=<span class="hljs-string">"true"</span>&gt;Disabled&lt;/a&gt;
              &lt;/li&gt;
            &lt;/ul&gt;
            &lt;form <span class="hljs-keyword">class</span>=<span class="hljs-string">"d-flex"</span>&gt;
              &lt;input <span class="hljs-keyword">class</span>=<span class="hljs-string">"form-control me-2"</span> <span class="hljs-keyword">type</span>=<span class="hljs-string">"search"</span> placeholder=<span class="hljs-string">"Search"</span> aria-label=<span class="hljs-string">"Search"</span>&gt;
              &lt;button <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-outline-success"</span> <span class="hljs-keyword">type</span>=<span class="hljs-string">"submit"</span>&gt;Search&lt;/button&gt;
            &lt;/form&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/nav&gt;
&lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"container"</span>&gt;
&lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"row"</span>&gt;

  &lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"col-xl pt-3"</span>&gt;
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero, laborum hic, quia maiores animi nobis eligendi est eos saepe architecto reiciendis! Aliquam inventore distinctio reprehenderit corporis amet assumenda officiis dolorem, animi delectus sunt dolor commodi. Adipisci nam nemo labore eligendi quas, rem ipsum iusto eveniet itaque vero necessitatibus! Quas, cupiditate tempora unde nam exercitationem libero aut labore deserunt nesciunt voluptate dignissimos quis porro reprehenderit maiores excepturi, esse, nisi dolores sit tenetur voluptatum corrupti alias provident pariatur? Quam illo unde autem, fugit numquam dolores, odio sed rem saepe exercitationem fuga, nisi soluta sunt officiis! Similique, vero repudiandae quae dignissimos fuga natus!
    &lt;/div&gt;

  &lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"col-xl pt-3 "</span>&gt;
    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Numquam, aliquid, cumque nisi tenetur similique labore repudiandae voluptas qui hic blanditiis beatae sapiente autem dolore! Quam, cupiditate nostrum laboriosam blanditiis vel ratione, repellat, incidunt modi tempore soluta ab nesciunt? Ab similique illum suscipit exercitationem et, aut quisquam neque atque recusandae rem delectus facilis. Magnam rerum fugit minus explicabo vel! Hic quibusdam laudantium dolorum, pariatur ipsam veritatis voluptate animi, nesciunt dolorem autem dicta. Debitis quae nam dicta autem ipsum mollitia! Ipsum ipsa, molestias fugiat officiis aut illum ullam architecto maxime labore vitae. Ipsum quos neque rerum, esse iste quo explicabo eos ipsa?
    &lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;div <span class="hljs-keyword">class</span>=<span class="hljs-string">"mt-5 pt-5 mb-5 text-center"</span>&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-primary"</span>&gt;Primary&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-secondary"</span>&gt;Secondary&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-success"</span>&gt;Success&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-danger"</span>&gt;Danger&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-warning"</span>&gt;Warning&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-info"</span>&gt;Info&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-light"</span>&gt;Light&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-dark"</span>&gt;Dark&lt;/button&gt;
  &lt;button <span class="hljs-keyword">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-keyword">class</span>=<span class="hljs-string">"btn btn-link"</span>&gt;Link&lt;/button&gt;
&lt;/div&gt;

 &lt;/div&gt;

 &lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>We have not compiled Sass yet. To see the default styles, run <em>Live Server</em>.</p>
<p>If <em>Live Server</em> is not installed, you can download the free extension from the VS Code extensions marketplace.</p>
<p>This is what we see:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/default_theme-3.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>It is time to compile our custom Sass file.</p>
<p>Compilation syntax is simple: Specify the source and destination folders separated with a colon.</p>
<p>I have my custom.scss file in a folder called <code>custom_scss</code>.</p>
<p><code>sass custom_scss/custom.scss:assets/css/custom_bootstrap.css</code></p>
<p>After recompiling, we have the customized bootstrap in the <code>assets/css/custom_bootstrap.css</code> file.</p>
<p>Instead of the default bootstrap file, we are going to use this customized bootstrap stylesheet.</p>
<pre><code class="lang-typescript">&lt;!-- index.html --&gt;
&lt;head&gt;

&lt;link rel=<span class="hljs-string">"stylesheet"</span> href=<span class="hljs-string">"./assets/css/custom_bootstrap.css"</span>&gt; <span class="hljs-string">`

&lt;/head&gt;</span>
</code></pre>
<p>Then run the <em>Live Server</em> again.</p>
<p>We get the webpage customized with our new styles.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/custom_theme..png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-change-the-grid-breakpoints">How to change the grid breakpoints</h3>
<p>We'll now customize the media breakpoints. Alongside, we have to redefine container-max-widths also.</p>
<p>The easiest way is to simply override the variables:</p>
<pre><code class="lang-typescript">$primary: teal;
$secondary:green;

$grid-breakpoints: (
  xs: <span class="hljs-number">0</span>,
  sm: <span class="hljs-number">576</span>px,
  md: <span class="hljs-number">768</span>px,
  lg: <span class="hljs-number">992</span>px,
  xl: <span class="hljs-number">1280</span>px,
  xxl: <span class="hljs-number">1600</span>px
);

$container-max-widths: (
  sm: <span class="hljs-number">540</span>px,
  md: <span class="hljs-number">720</span>px,
  lg: <span class="hljs-number">960</span>px,
  xl: <span class="hljs-number">1220</span>px,
  xxl: <span class="hljs-number">1520</span>px
);

<span class="hljs-meta">@import</span> <span class="hljs-string">'../node_modules/bootstrap/scss/bootstrap'</span>
</code></pre>
<p>Since this would violate DRY principles (Don't Repeat Yourself), using the <code>map-merge()</code> function is a better option.</p>
<p>We have to import functions first in the custom.scss file to make <code>map.merge()</code> available.</p>
<p>We have to import variables also because $grid-breakpoints (to be used inside the function) is defined there.</p>
<pre><code class="lang-typescript"><span class="hljs-comment">//custom.scss</span>

$primary: teal;
$secondary: green;

<span class="hljs-meta">@import</span> <span class="hljs-string">'../node_modules/bootstrap/scss/functions'</span>;
<span class="hljs-meta">@import</span> <span class="hljs-string">'../node_modules/bootstrap/scss/variables'</span>;
</code></pre>
<p>This is the code:</p>
<pre><code class="lang-typescript"><span class="hljs-comment">//custom.scss</span>

$primary: teal;
$secondary: green;

<span class="hljs-comment">//We have to import the functions first to use map.merge()</span>

<span class="hljs-meta">@import</span> <span class="hljs-string">'../node_modules/bootstrap/scss/functions'</span>;

<span class="hljs-comment">// We have to import the variables beforehand to </span>
<span class="hljs-comment">//use the variable $grid-breakpoints.</span>
<span class="hljs-comment">// Otherwise, compiler will show error - '$grid-breakpoints </span>
<span class="hljs-comment">//undefined.'</span>

<span class="hljs-meta">@import</span> <span class="hljs-string">'../node_modules/bootstrap/scss/variables'</span>;

$new-breakpoints: (
    xl: <span class="hljs-number">1280</span>px,
    xxl:<span class="hljs-number">1600</span>px
);

$grid-breakpoints: map-merge($grid-breakpoints, $new-breakpoints);

$new-container-max-widths: (
  xl: <span class="hljs-number">1220</span>px,
  xxl:<span class="hljs-number">1520</span>px
);

$container-max-widths: map-merge($container-max-widths, $new-container-max-widths);

<span class="hljs-meta">@import</span> <span class="hljs-string">"../node_modules/bootstrap/scss/bootstrap"</span>;
</code></pre>
<p>We compile again and use the newest file in place of the older one.</p>
<p><code>&lt;link rel="stylesheet" href="./assets/css/custom_bootstrap.css"&gt;</code></p>
<p>This is the final result:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/06/custom_theme_with_custom_breakpoints-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>It is not just theme colors and media breakpoints. Borders, spacing, box-shadow, fonts, icons...you can customize anything.</p>
<p>I have put up all the above code in this GitHub <a target="_blank" href="https://github.com/vinod-vms/Customize_Bootstrap_with_Sass">repo</a>.</p>
<p>For exploring further, the official Bootstrap <a target="_blank" href="https://getbootstrap.com/docs/5.0/getting-started/introduction/">documentation</a> is an excellent resource in this regard.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>In this tutorial, I've shown you how we can use Sass to customize Bootstrap.</p>
<p>Even if we are in a project that uses React with Bootstrap, the idea is the same. Create a custom .scss file, make customizations, import bootstrap, recompile, and then link to the customized file in place of the original bootstrap file.</p>
<p>Happy Learning!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Add Bootstrap to an Angular Application ]]>
                </title>
                <description>
                    <![CDATA[ By Rodrigo Kamada In this article, we'll build a web application using the latest version of Angular. Then we'll add the Bootstrap CSS framework which provides rich and responsive interface components. Let's get started. Prerequisites Before you star... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-add-bootstrap-css-framework-to-an-angular-application/</link>
                <guid isPermaLink="false">66d460c79208fb118cc6cffc</guid>
                
                    <category>
                        <![CDATA[ Angular ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 06 Jun 2022 10:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/05/angular-bootstrap-cover-hashnode.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Rodrigo Kamada</p>
<p>In this article, we'll build a web application using the latest version of Angular. Then we'll add the Bootstrap CSS framework which provides rich and responsive interface components.</p>
<p>Let's get started.</p>
<h2 id="heading-prerequisites">Prerequisites</h2>
<p>Before you start, you need to install and configure the tools below to create the Angular application.</p>
<ul>
<li><a target="_blank" href="https://git-scm.com/">Git</a>: Git is a distributed version control system and we'll use it to sync the repository. </li>
<li><a target="_blank" href="https://nodejs.org/">Node.js and npm</a>: Node.js is a JavaScript code runtime software based on Google's V8 engine. npm is a package manager for Node.js (Node Package Manager). We'll use these tools to build and run the Angular application and install the libraries.</li>
<li><a target="_blank" href="https://angular.io/cli">Angular CLI</a>: Angular CLI is a command line utility tool for Angular and we'll use it to create the base structure of the Angular application.</li>
<li>An IDE (like <a target="_blank" href="https://code.visualstudio.com/">Visual Studio Code</a> or <a target="_blank" href="https://www.jetbrains.com/webstorm/">WebStorm</a>): an Integrated Development Environment is a tool with a graphical interface that helps you develop applications. We'll use one to develop our Angular application.</li>
</ul>
<h2 id="heading-how-to-create-the-angular-application">How to Create the Angular application</h2>
<p><a target="_blank" href="https://angular.io/">Angular</a> is a development platform for building web, mobile, and desktop applications using HTML, CSS and TypeScript (JavaScript). Currently, Angular is at version 13 and Google is the main maintainer of the project.</p>
<p><a target="_blank" href="https://getbootstrap.com/">Bootstrap</a> is an open source CSS framework that has many components for building responsive web interfaces.</p>
<p>Let's create the application with the Angular base structure using the <code>@angular/cli</code> with the route file and the SCSS style format.</p>
<pre><code class="lang-powershell">ng new angular<span class="hljs-literal">-bootstrap</span>
? Would you like to add Angular routing? Yes
? Which stylesheet format would you like to use? SCSS   [ <span class="hljs-type">https</span>://<span class="hljs-type">sass</span>-<span class="hljs-type">lang.com</span>/<span class="hljs-type">documentation</span>/<span class="hljs-type">syntax</span><span class="hljs-comment">#scss                ]</span>
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">README.md</span> (<span class="hljs-number">1062</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">.editorconfig</span> (<span class="hljs-number">274</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">.gitignore</span> (<span class="hljs-number">604</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">angular.json</span> (<span class="hljs-number">3273</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">package.json</span> (<span class="hljs-number">1079</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">tsconfig.json</span> (<span class="hljs-number">783</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">.browserslistrc</span> (<span class="hljs-number">703</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">karma.conf.js</span> (<span class="hljs-number">1434</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">tsconfig.app.json</span> (<span class="hljs-number">287</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">tsconfig.spec.json</span> (<span class="hljs-number">333</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">favicon.ico</span> (<span class="hljs-number">948</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">index.html</span> (<span class="hljs-number">302</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">main.ts</span> (<span class="hljs-number">372</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">polyfills.ts</span> (<span class="hljs-number">2820</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">styles.scss</span> (<span class="hljs-number">80</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">test.ts</span> (<span class="hljs-number">743</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">assets</span>/<span class="hljs-type">.gitkeep</span> (<span class="hljs-number">0</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">environments</span>/<span class="hljs-type">environment.prod.ts</span> (<span class="hljs-number">51</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">environments</span>/<span class="hljs-type">environment.ts</span> (<span class="hljs-number">658</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">app</span>/<span class="hljs-type">app</span>-<span class="hljs-type">routing.module.ts</span> (<span class="hljs-number">245</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">app</span>/<span class="hljs-type">app.module.ts</span> (<span class="hljs-number">393</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">app</span>/<span class="hljs-type">app.component.scss</span> (<span class="hljs-number">0</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">app</span>/<span class="hljs-type">app.component.html</span> (<span class="hljs-number">23809</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">app</span>/<span class="hljs-type">app.component.spec.ts</span> (<span class="hljs-number">1090</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
<span class="hljs-type">CREATE</span> <span class="hljs-type">angular</span>-<span class="hljs-type">bootstrap</span>/<span class="hljs-type">src</span>/<span class="hljs-type">app</span>/<span class="hljs-type">app.component.ts</span> (<span class="hljs-number">222</span> <span class="hljs-built_in">byte</span><span class="hljs-type">s</span>)
✔ <span class="hljs-type">Packages</span> <span class="hljs-type">installed</span> <span class="hljs-type">successfully.</span>
    <span class="hljs-type">Successfully</span> <span class="hljs-type">initialized</span> <span class="hljs-type">git.</span>
</code></pre>
<p>Now we need to install the <code>bootstrap</code> and <code>bootstrap-icons</code> libraries that contain the files with Bootstrap's styles and JavaScript code like this:</p>
<pre><code class="lang-powershell">npm install bootstrap bootstrap<span class="hljs-literal">-icons</span>
</code></pre>
<p>After install, we will configure the <code>bootstrap</code> and <code>bootstrap-icons</code> libraries. Change the <code>angular.json</code> file and add the <code>bootstrap.scss</code>, <code>bootstrap-icons.css</code> and <code>bootstrap.bundle.min.js</code> files as below:</p>
<pre><code class="lang-json"><span class="hljs-string">"styles"</span>: [
  <span class="hljs-string">"node_modules/bootstrap/scss/bootstrap.scss"</span>,
  <span class="hljs-string">"node_modules/bootstrap-icons/font/bootstrap-icons.css"</span>,
  <span class="hljs-string">"src/styles.scss"</span>
],
<span class="hljs-string">"scripts"</span>: [
  <span class="hljs-string">"node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"</span>
]
</code></pre>
<p>Now we will install the <code>@ng-bootstrap/ng-bootstrap</code> library which contains native Angular support:</p>
<pre><code class="lang-powershell">npm install @ng<span class="hljs-literal">-bootstrap</span>/ng<span class="hljs-literal">-bootstrap</span>@next
</code></pre>
<p>After install, we will import the <code>NgbModule</code> module. Change the <code>app.module.ts</code> file and add the lines as below:</p>
<pre><code class="lang-typescript"><span class="hljs-keyword">import</span> { NgbModule } <span class="hljs-keyword">from</span> <span class="hljs-string">'@ng-bootstrap/ng-bootstrap'</span>;

imports: [
  BrowserModule,
  NgbModule,
  AppRoutingModule,
],
</code></pre>
<p>Now we will remove the contents of the <code>AppComponent</code> class from the <code>src/app/app.component.ts</code> file. Import the <code>NgbModal</code> service and create the <code>open</code> method to open a modal as below.</p>
<pre><code class="lang-typescript"><span class="hljs-keyword">import</span> { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'@angular/core'</span>;
<span class="hljs-keyword">import</span> { NgbModal } <span class="hljs-keyword">from</span> <span class="hljs-string">'@ng-bootstrap/ng-bootstrap'</span>;

<span class="hljs-meta">@Component</span>({
  selector: <span class="hljs-string">'app-root'</span>,
  templateUrl: <span class="hljs-string">'./app.component.html'</span>,
  styleUrls: [<span class="hljs-string">'./app.component.scss'</span>],
})
<span class="hljs-keyword">export</span> <span class="hljs-keyword">class</span> AppComponent {

  <span class="hljs-keyword">constructor</span>(<span class="hljs-params"><span class="hljs-keyword">private</span> modalService: NgbModal</span>) {
  }

  <span class="hljs-keyword">public</span> open(modal: <span class="hljs-built_in">any</span>): <span class="hljs-built_in">void</span> {
    <span class="hljs-built_in">this</span>.modalService.open(modal);
  }

}
</code></pre>
<p>Next we will remove the contents of the <code>src/app/app.component.html</code> file. Add some components in the HTML to view and test the components as below.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-expand-sm navbar-light bg-light"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>Angular Bootstrap<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-toggler"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">data-bs-toggle</span>=<span class="hljs-string">"collapse"</span> <span class="hljs-attr">data-bs-target</span>=<span class="hljs-string">"#navbarSupportedContent"</span> <span class="hljs-attr">aria-controls</span>=<span class="hljs-string">"navbarSupportedContent"</span> <span class="hljs-attr">aria-expanded</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">aria-label</span>=<span class="hljs-string">"Toggle navigation"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-toggler-icon"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"collapse navbar-collapse"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"navbarSupportedContent"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-nav me-auto mb-2 mb-lg-0"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-item"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link active"</span> <span class="hljs-attr">aria-current</span>=<span class="hljs-string">"page"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-item"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Link<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-item dropdown"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link dropdown-toggle"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"navbarDropdown"</span> <span class="hljs-attr">role</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">data-bs-toggle</span>=<span class="hljs-string">"dropdown"</span> <span class="hljs-attr">aria-expanded</span>=<span class="hljs-string">"false"</span>&gt;</span>
            Dropdown
          <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-menu"</span> <span class="hljs-attr">aria-labelledby</span>=<span class="hljs-string">"navbarDropdown"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-item"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Action<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-item"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Another action<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">hr</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-divider"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-item"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Something else here<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-item"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link disabled"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">tabindex</span>=<span class="hljs-string">"-1"</span> <span class="hljs-attr">aria-disabled</span>=<span class="hljs-string">"true"</span>&gt;</span>Disabled<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"d-flex"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control me-2"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"search"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Search"</span> <span class="hljs-attr">aria-label</span>=<span class="hljs-string">"Search"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-outline-success"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span>&gt;</span>Search<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid py-3"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row my-3"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"exampleFormControlInput1"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-label"</span>&gt;</span>Email address<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control form-control-sm"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"exampleFormControlInput1"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"name@example.com"</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row my-3"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"exampleFormControlTextarea1"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-label"</span>&gt;</span>Example textarea<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">textarea</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control form-control-sm"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"exampleFormControlTextarea1"</span> <span class="hljs-attr">rows</span>=<span class="hljs-string">"3"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">textarea</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row my-3"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-check form-switch"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-check-input"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"flexSwitchCheckDefault"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-check-label"</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"flexSwitchCheckDefault"</span>&gt;</span>Default switch checkbox input<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row my-3"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-sm btn-outline-primary"</span> (<span class="hljs-attr">click</span>)=<span class="hljs-string">"open(demoModal)"</span>&gt;</span>Launch demo modal<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">ng-template</span> #<span class="hljs-attr">demoModal</span> <span class="hljs-attr">let-modal</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"modal-header"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h4</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"modal-title"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"modal-basic-title"</span>&gt;</span>Profile update<span class="hljs-tag">&lt;/<span class="hljs-name">h4</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn-close"</span> <span class="hljs-attr">data-bs-dismiss</span>=<span class="hljs-string">"modal"</span> <span class="hljs-attr">aria-label</span>=<span class="hljs-string">"Close"</span> (<span class="hljs-attr">click</span>)=<span class="hljs-string">"modal.dismiss('Cross click')"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"modal-body"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">form</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"dateOfBirth"</span>&gt;</span>Date of birth<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"input-group"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"dateOfBirth"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dateOfBirth"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"yyyy-mm-dd"</span> <span class="hljs-attr">ngbDatepicker</span> #<span class="hljs-attr">dp</span>=<span class="hljs-string">"ngbDatepicker"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-outline-secondary bi bi-calendar"</span> (<span class="hljs-attr">click</span>)=<span class="hljs-string">"dp.toggle()"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"modal-footer"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-outline-dark"</span> (<span class="hljs-attr">click</span>)=<span class="hljs-string">"modal.close('Save click')"</span>&gt;</span>Save<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">ng-template</span>&gt;</span>
</code></pre>
<p>Finally, we will run the application with the command below:</p>
<pre><code class="lang-powershell">npm <span class="hljs-built_in">start</span>

&gt; angular<span class="hljs-literal">-bootstrap</span>@<span class="hljs-number">1.0</span>.<span class="hljs-number">0</span> <span class="hljs-built_in">start</span>
&gt; ng serve

✔ Browser application bundle generation complete.

Initial Chunk Files | Names         |      Size
vendor.js           | vendor        |   <span class="hljs-number">3.38</span> MB
styles.css          | styles        | <span class="hljs-number">255.86</span> kB
polyfills.js        | polyfills     | <span class="hljs-number">128.56</span> kB
scripts.js          | scripts       |  <span class="hljs-number">76.94</span> kB
main.js             | main          |  <span class="hljs-number">22.81</span> kB
runtime.js          | runtime       |   <span class="hljs-number">6.59</span> kB

                    | Initial Total |   <span class="hljs-number">3.86</span> MB

Build at: <span class="hljs-number">2021</span><span class="hljs-literal">-06</span><span class="hljs-literal">-27T21</span>:<span class="hljs-number">28</span>:<span class="hljs-number">22.756</span>Z - Hash: <span class="hljs-number">122</span>b9fa4d57b962e7bcc - Time: <span class="hljs-number">21933</span>ms

** Angular Live Development Server is listening on localhost:<span class="hljs-number">4200</span>, open your browser on http://localhost:<span class="hljs-number">4200</span>/ **


✔ Compiled successfully.
</code></pre>
<p>Ready! We will access the URL at <code>http://localhost:4200/</code> and check if the application is working. You can see the application working on <a target="_blank" href="https://rodrigokamada.github.io/angular-bootstrap/">GitHub Pages</a> and <a target="_blank" href="https://stackblitz.com/edit/angular13-bootstrap">Stackblitz</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/angular-bootstrap.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The application repository is available at <a target="_blank" href="https://github.com/rodrigokamada/angular-bootstrap">https://github.com/rodrigokamada/angular-bootstrap</a>.</p>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Let's summarize what we covered in this article:</p>
<ul>
<li>We created an Angular application.</li>
<li>We added some Bootstrap CSS framework components.</li>
</ul>
<p>You can use this article to create rich and responsive applications that provide a better user experience and greater usability.</p>
<p>Thank you for reading and I hope you enjoyed the article!</p>
<p>This tutorial was posted on my <a target="_blank" href="https://rodrigo.kamada.com.br/share/blog/adicionando-o-framework-de-css-bootstrap-em-uma-aplicacao-angular">blog</a> in Portuguese.</p>
<p>To stay updated whenever I post new articles, follow me on <a target="_blank" href="https://twitter.com/rodrigokamada">Twitter</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Full Bootstrap 5 Tutorial for Beginners ]]>
                </title>
                <description>
                    <![CDATA[ Bootstrap is the most popular CSS framework. It allows web developers to quickly design and customize responsive mobile-first sites. We just published a 3-hour course on the freeCodeCamp.org YouTube channel that will teach you how to use Bootstrap 5.... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/full-bootstrap-5-tutorial-for-beginners/</link>
                <guid isPermaLink="false">66b20270125aeccef6f65ca2</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Tue, 07 Dec 2021 17:47:12 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/12/bootstrap.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Bootstrap is the most popular CSS framework. It allows web developers to quickly design and customize responsive mobile-first sites.</p>
<p>We just published a 3-hour course on the freeCodeCamp.org YouTube channel that will teach you how to use Bootstrap 5.</p>
<p>Dawid Adach developed this course. Dawid has been working with Bootstrap for years and helped create one of the most popular Bootstrap libraries called Material Design for Bootstrap.</p>
<p>Here are all the sections covered in this course:</p>
<ul>
<li>What is Bootstrap?</li>
<li>Why use Bootstrap?</li>
<li>Download compiled CSS and JS</li>
<li>Install via CDN</li>
<li>NPM installation</li>
<li>Grid System</li>
<li>Components</li>
<li>Buttons</li>
<li>Cards</li>
<li>Typography</li>
<li>Responsive images</li>
<li>Utilities</li>
<li>Tables</li>
<li>Alerts </li>
<li>Navs &amp; Navbars</li>
<li>Icons</li>
<li>Forms</li>
<li>Other components</li>
<li>Creating a project using Bootstrap 5</li>
</ul>
<p>Watch the full course below or <a target="_blank" href="https://www.youtube.com/watch?v=-qfEOE4vtxE">on the freeCodeCamp.org YouTube channel</a> (3-hour watch).</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/-qfEOE4vtxE" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Switch from jQuery to Vanilla JavaScript with Bootstrap 5 ]]>
                </title>
                <description>
                    <![CDATA[ By Zoltán Szőgyényi Bootstrap 5 is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. In case you didn't know, Bootstrap 5 alpha has been officially launched. It has removed jQuery as a dependency, ha... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/bootstrap-5-vanilla-js-tutorial/</link>
                <guid isPermaLink="false">66d461c438f2dc3808b79128</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Bootstrap 5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jQuery ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Tutorial ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 31 Jul 2020 18:09:09 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/07/bootstrap-5-vanilla-js.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Zoltán Szőgyényi</p>
<p><a target="_blank" href="http://v5.getbootstrap.com/">Bootstrap 5</a> is a free and open-source CSS framework directed at responsive, mobile-first front-end web development.</p>
<p>In case you didn't know, <a target="_blank" href="https://themesberg.com/blog/bootstrap/bootstrap-version-5-alpha-whats-new">Bootstrap 5 alpha has been officially launched</a>. It has removed jQuery as a dependency, has dropped support for Internet Explorer 9 and 10, and brings some awesome updates for the Sass files, markup, and a new Utility API.</p>
<p>This tutorial will show you how to start using VanillaJS instead of jQuery when building websites using the newest version of Bootstrap 5.</p>
<h2 id="heading-getting-started">Getting started</h2>
<p>You will need to include Bootstrap 5 in your project. There are several ways to do this, but to keep it simple we will include the framework via CDN.</p>
<p>First of all, let's create a blank <code>index.html</code> page inside a project folder:</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Bootstrap 5 Vanilla JS tutorial by Themesberg<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>Include the <code>bootstrap.min.css</code> stylesheet before the end of your <code>&lt;head&gt;</code> tag:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span>
</code></pre>
<p>Afterwards include the Popper.js library and the main Bootstrap JavaScript file before the end of your <code>&lt;body&gt;</code> tag:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></pre>
<p>Curious what the <code>integrity</code> and <code>crossorigin</code> attributes mean? Here's the explanation:</p>
<p><strong>Integrity attribute</strong>: allows the browser to check the file source to ensure that the code is never loaded if the source has been manipulated.</p>
<p><strong>Crossorigin attribute</strong>: is present when a request is loaded using 'CORS' which is now a requirement of SRI checking when not loaded from the 'same-origin'.</p>
<p>Great! Now we have successfully included the newest version of Bootstrap in our project. One of the obvious differences is that we no longer had to require jQuery as a dependency, <strong>saving about 82.54 KB</strong> in bandwidth if in a minified state.</p>
<h2 id="heading-switching-from-jquery-to-vanilla-js">Switching from jQuery to Vanilla JS</h2>
<p>Before we get started with this section, you should know that using Bootstrap 5 with jQuery is still possible according to the <a target="_blank" href="https://v5.getbootstrap.com/docs/5.0/getting-started/javascript/#still-want-to-use-jquery-its-possible">official documentation</a>.</p>
<p>We recommend using Vanilla JavaScript if the only reason you've been using jQuery was for the query selector, because you can do the same thing with the <code>document.querySelector('#element')</code> as if it was <code>$('#element')</code>.</p>
<p>The first step is to create a JavaScript file and include it before the end of the body tag but after the other two includes:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"js/app.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></pre>
<p>So when do you need to actually use Javascript with Bootstrap 5? There are certain components in the framework that work only if they are initialized via Javascript, such as tooltips, popovers and toasts.</p>
<p>Furthermore, with components such as modals, dropdowns, and carousels you may want to be able to programmatically change them based on a user action or application logic.</p>
<h3 id="heading-initializing-tooltips-via-vanilla-javascript">Initializing tooltips via Vanilla JavaScript</h3>
<p>We all love tooltips, but they don't work unless they are initialized via JavaScript. Let's first start by creating a tooltip element inside our <code>index.html</code> file:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"tooltip"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-secondary"</span> <span class="hljs-attr">data-toggle</span>=<span class="hljs-string">"tooltip"</span> <span class="hljs-attr">data-placement</span>=<span class="hljs-string">"top"</span> <span class="hljs-attr">title</span>=<span class="hljs-string">"Tooltip on top"</span>&gt;</span>
    Tooltip on top
<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
</code></pre>
<p>Hovering over the button will not show the tooltip, because by default it is an opt-in feature of Bootstrap and it needs to be initialized manually using JavaScript. If you want to do it with jQuery, here's how it would look:</p>
<pre><code class="lang-js">$(<span class="hljs-string">'#tooltip'</span>).tooltip();
</code></pre>
<p>Using Vanilla JS you would need to use the following code to enable the tooltip:</p>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> tooltipElement = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'tooltip'</span>);
<span class="hljs-keyword">var</span> tooltip = <span class="hljs-keyword">new</span> bootstrap.Tooltip(tooltipElement);
</code></pre>
<p>What the code above does it that it selects the element with the unique id of "tooltip" and then creates a Bootstrap tooltip object. You can then use that to manipulate the state of the tooltip, such as showing or hiding the tooltip programmatically.</p>
<p>Here's an example on how you could show/hide it via methods:</p>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> showTooltip = <span class="hljs-literal">true</span>;
<span class="hljs-keyword">if</span> (showTooltip) {
    tooltip.show();
} <span class="hljs-keyword">else</span> {
    tooltip.hide();
}
</code></pre>
<p>If you would like to enable all of the tooltips you could also use the following code:</p>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> tooltipTriggerList = [].slice.call(<span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">'[data-toggle="tooltip"]'</span>));
<span class="hljs-keyword">var</span> tooltipList = tooltipTriggerList.map(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">tooltipTriggerEl</span>) </span>{
  <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> bootstrap.Tooltip(tooltipTriggerEl)
});
</code></pre>
<p>What happens here is that we select all of the elements that have the <code>data-toggle="tooltip"</code> attribute and value and initialize a tooltip object for each one. It also saves them to a tooltipList variable.</p>
<h3 id="heading-toggle-the-visibility-of-your-elements-using-the-collapse-javascript-methods">Toggle the visibility of your elements using the Collapse JavaScript methods</h3>
<p>The collapse feature on Bootstrap is another very handy way to show and hide elements via data attributes or JavaScript.</p>
<p>Here's an example of how we can show or hide a card when a certain button is being clicked. Let's first create the HTML markup:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"toggleCardButton"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-primary mb-2"</span>&gt;</span>Toggle Card<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"card"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"card collapse show"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"width: 18rem;"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://dev-to-uploads.s3.amazonaws.com/i/rphqzfoh2cbz3zj8m8t1.png"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"card-img-top"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"..."</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"card-body"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">h5</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"card-title"</span>&gt;</span>Freecodecamp.org<span class="hljs-tag">&lt;/<span class="hljs-name">h5</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"card-text"</span>&gt;</span>Awesome resource to learn programming from.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-primary"</span>&gt;</span>Learn coding for free<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>So we created a button with the id <code>toggleCardButton</code> and a card with the id <code>card</code>. Let's start by selecting the two elements:</p>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> toggleButton = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'toggleCardButton'</span>);
<span class="hljs-keyword">var</span> card = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'card'</span>);
</code></pre>
<p>Then we need to create a collapsable object using the newly selected card element:</p>
<pre><code class="lang-js"><span class="hljs-keyword">var</span> collapsableCard = <span class="hljs-keyword">new</span> bootstrap.Collapse(card, {<span class="hljs-attr">toggle</span>: <span class="hljs-literal">false</span>});
</code></pre>
<p>What the <code>toggle:false</code> flag does is that it keeps the element visible after creating the object. If not present, it would hide the card by default.</p>
<p>Now we need to add an event listener for the button for the click action:</p>
<pre><code class="lang-js">toggleButton.addEventListener(<span class="hljs-string">'click'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
    <span class="hljs-comment">// do something when the button is being clicked</span>
});
</code></pre>
<p>And lastly we need to toggle the card using the collapsable object that we initialized like this:</p>
<pre><code class="lang-js">toggleButton.addEventListener(<span class="hljs-string">'click'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
    collapsableCard.toggle();
});
</code></pre>
<p>That's it! Now the card will be shown/hidden whenever the button is clicked. Of course all of this could've been done using the <a target="_blank" href="https://v5.getbootstrap.com/docs/5.0/components/collapse/#via-data-attributes">data attributes feature</a> from Bootstrap, but you may want to toggle certain elements based on an API call or a logic in your application.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>If you have followed along this tutorial you should now be able to use the most popular CSS framework without the need of requiring jQuery in your project. This lets you <strong>save up to 85 KB of data</strong> and makes your website faster! Congratulations ?</p>
<p>If you appreciate this tutorial and like using Bootstrap as a CSS framework for your projects, I invite you to check out some of the free and premium <a target="_blank" href="https://themesberg.com/templates/bootstrap">Bootstrap themes, templates, and UI Kits</a> that we build at Themesberg ❤️</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Bootstrap Row Height ]]>
                </title>
                <description>
                    <![CDATA[ Bootstrap is one of the fastest ways to, well, bootstrap a project. The library includes a lot of helpful CSS utility classes to get a responsive, mobile first layout up and running quickly. But what if you start adding your own CSS rules to the mix,... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/bootstrap-row-height/</link>
                <guid isPermaLink="false">66c346338ced2460cf9e9b54</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ bootstrap 4 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 02 Jun 2020 02:18:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9a99740569d1a4ca2690.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Bootstrap is one of the fastest ways to, well, bootstrap a project. The library includes a lot of helpful CSS utility classes to get a responsive, mobile first layout up and running quickly.</p>
<p>But what if you start adding your own CSS rules to the mix, but they don't seem to have any affect on the layout? Is it Bootstrap overwriting your styles? Or something else?</p>
<p>For example, say you want to increase the height of a row, and also resize and image.</p>
<p>Here is your HTML:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"divheight"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row bg-info text-white"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-2 align-middle"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://static-cdn.jtvnw.net/jtv_user_pictures/freecodecamp-profile_image-d9514f2df0962329-300x300.png"</span> &lt;/<span class="hljs-attr">img</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-3 align-middle"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span>freecodecamp<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-7 align-middle"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span>Greg working on Electron-Vue boilerplate w/ Akira #programming #vuejs #electron<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>And CSS:</p>
<pre><code class="lang-css"><span class="hljs-selector-id">#divheight</span> {
  <span class="hljs-attribute">heights</span>: <span class="hljs-number">120px</span>;
}

<span class="hljs-selector-tag">img</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">50px</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">50px</span>;
}
</code></pre>
<p>The problem is that, for some reason, the height of the row is 50px like the image, not 120px:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/image-47.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-solution">Solution</h2>
<p>There are a couple of reasons this is happening. First, did you notice the typo above?</p>
<p>Fix that and your CSS will look like this:</p>
<pre><code class="lang-css"><span class="hljs-selector-id">#divheight</span> {
  <span class="hljs-attribute">height</span>: <span class="hljs-number">120px</span>;
}

<span class="hljs-selector-tag">img</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">50px</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">50px</span>;
}
</code></pre>
<p>But your row still isn't 120px. If you inspect <code>#divheight</code>, you'll see that it's just under 120px:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/image-48.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Instead of targeting <code>#divheight</code>, go down to the next <code>div</code> element and target the class <code>row</code>:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.row</span> {
  <span class="hljs-attribute">height</span>: <span class="hljs-number">120px</span>;
}

<span class="hljs-selector-tag">img</span> {
  <span class="hljs-attribute">width</span>: <span class="hljs-number">50px</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">50px</span>;
}
</code></pre>
<p>Then the row will be 120px like you expect:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/image-49.png" alt="Image" width="600" height="400" loading="lazy"></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Bootstrap 4: How to Make Top Fixed Navbar Stay in Container and Not Stretch? ]]>
                </title>
                <description>
                    <![CDATA[ There are many ways to make a fixed navbar stay inside a parent's div container. We'll go over the most straightforward one here. Imagine you have the following code, modified slightly from the Bootstrap docs: <div class="container">   <nav class="na... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/bootstrap-4-how-to-make-top-fixed-navbar-stay-in-container-and-not-stretch/</link>
                <guid isPermaLink="false">66c34631d48c8b932b406b16</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ bootstrap 4 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ toothbrush ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 02 Jun 2020 02:17:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9a9e740569d1a4ca26b6.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>There are many ways to make a fixed navbar stay inside a parent's <code>div</code> container. We'll go over the most straightforward one here.</p>
<p>Imagine you have the following code, modified slightly from the <a target="_blank" href="https://v4-alpha.getbootstrap.com/components/navbar/#collapsible-content">Bootstrap docs</a>:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-fixed-top navbar-inverse bg-inverse"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-toggler hidden-lg-up"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">data-toggle</span>=<span class="hljs-string">"collapse"</span> <span class="hljs-attr">data-target</span>=<span class="hljs-string">"#navbarResponsive"</span> <span class="hljs-attr">aria-controls</span>=<span class="hljs-string">"navbarResponsive"</span> <span class="hljs-attr">aria-expanded</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">aria-label</span>=<span class="hljs-string">"Toggle navigation"</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"collapse navbar-toggleable-md"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"navbarResponsive"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">""</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"30"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"30"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"d-inline-block align-top"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">""</span>&gt;</span>Navbar
      <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav float-md-right"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-item active"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home
            <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"sr-only"</span>&gt;</span>(current)<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-item"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Link<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-item"</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav-link"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Link<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"next"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  hello
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<pre><code class="lang-css"><span class="hljs-selector-tag">div</span><span class="hljs-selector-class">.next</span> {
  <span class="hljs-attribute">background-color</span>: lightblue;
  <span class="hljs-attribute">width</span>: <span class="hljs-number">100%</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">60rem</span>;
}
</code></pre>
<p>And your page looks like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-solutions">Solutions</h2>
<p>While the docs read "Navbars and their contents are fluid by default. Use optional containers to limit their horizontal width," the easiest solution is to use CSS to set the width of the navbar directly:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">div</span><span class="hljs-selector-class">.next</span> {
  <span class="hljs-attribute">background-color</span>: lightblue;
  <span class="hljs-attribute">width</span>: <span class="hljs-number">100%</span>;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">60rem</span>;
}

<span class="hljs-selector-class">.container</span> {
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0px</span>;
}

<span class="hljs-selector-tag">nav</span><span class="hljs-selector-class">.navbar</span> {
  <span class="hljs-attribute">width</span>: inherit;
  <span class="hljs-attribute">top</span>: <span class="hljs-number">0%</span>;
  <span class="hljs-attribute">left</span>: <span class="hljs-number">50%</span>;
  <span class="hljs-attribute">transform</span>: <span class="hljs-built_in">translateX</span>(-<span class="hljs-number">50%</span>);
}
</code></pre>
<p>By adding rules targeting <code>.container</code> and <code>nav.navbar</code>, your navbar is now the same width as the parent's container:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/image-46.png" alt="Image" width="600" height="400" loading="lazy"></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to instantly make your front end projects look better ]]>
                </title>
                <description>
                    <![CDATA[ By Peter Gleeson We’ve all been there. You’ve been learning the basics of front end Web development, and you are keen to try out some new ideas. You take the time to code up the perfect HTML page, and add some styles and JavaScript for good measure. ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-make-your-front-end-projects/</link>
                <guid isPermaLink="false">66d460a3ffe6b1f641b5fa61</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ colors ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ front end ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Front-end Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ frontend ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 09 Mar 2020 11:07:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9c3f740569d1a4ca30eb.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Peter Gleeson</p>
<p>We’ve all been there. You’ve been learning the basics of front end Web development, and you are keen to try out some new ideas.</p>
<p>You take the time to code up the perfect HTML page, and add some styles and JavaScript for good measure.</p>
<p>Then you pause. Time to take a moment to step back and see how your efforts look in the browser.</p>
<p>Pretty terrible, right?</p>
<p>That was certainly my experience when I first learned a little front end development.</p>
<p>I’d put a lot of thought into the functionality of the site. But when I put everything together, it looked awful.</p>
<p>I wanted to share my work with a few friends to get feedback. But in its present state, my site wasn’t ready.</p>
<p>You see, functionality is only half the story. We humans for whatever reason are biased towards the appearance or presentation of something.</p>
<p>Perhaps we’re more likely to trust a site that appears professional and well-designed. Or maybe the aesthetic value of a well-designed site can help us overlook minor flaws in functionality.</p>
<p>Whatever the reason, something of a “<a target="_blank" href="https://en.wikipedia.org/wiki/Halo_effect">halo effect</a>” does exist in Web development.</p>
<p>In this article, you’ll learn a few easy tips to make your ugly af front end project look better in no time.</p>
<h3 id="heading-the-starting-point">The starting point</h3>
<p>Below is an example of a simple HTML page with no styling at all.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/pg2020/embed/PoqOQmG" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>This will be the starting point for the rest of the article. Each tip will build on top of the earlier ones until you have a better looking page to work with.</p>
<p>We’ll go in order of impact. That is, we’ll start with the tip that gives you the quickest improvement and make smaller and smaller gains as we go.</p>
<h3 id="heading-add-some-negative-space">Add some negative space</h3>
<p>The first tip is easy to picture, but needs to be put into practice carefully.</p>
<p>‘Negative space' refers to the empty space between elements on the page.</p>
<p>Getting the right amount of negative space goes a long way to making your page look better.</p>
<p>Specifically, it does two things:</p>
<ul>
<li>It makes the page less cluttered. It is easier to find the different elements, because the negative space helps them stand out from each other.</li>
<li>It makes better use of the available screen space. Spacing the elements out carefully can help fill parts of the screen that are more central, and reduce content in parts on the edges.</li>
</ul>
<p>Check the CSS in the example below. This adds some basic negative space to the simple example you saw earlier.</p>
<p>And here is the result:</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/pg2020/embed/oNXoEWK" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>Notice what has happened here:</p>
<ul>
<li>Padding creates space within an element</li>
<li>Margin creates space between the elements</li>
<li>Line-size makes text less cluttered</li>
</ul>
<p>Too much empty space isn’t a good look. It can be tricky to get the balance right.</p>
<h3 id="heading-pair-your-fonts">Pair your fonts</h3>
<p>The next tip is another one with a quick impact.</p>
<p>The default system fonts are very safe and sensible. They are guaranteed to work.</p>
<p>But the choice of font makes a huge statement about the purpose and feel of your site.</p>
<ul>
<li>Light, playful fonts tell the viewer this page is fun and accessible</li>
<li>Sensible, simple fonts give a more business-like appearance</li>
<li>Traditional or display fonts give more of a timeless, classic look.</li>
</ul>
<p>You get the idea.</p>
<p>But how to put it into practice?</p>
<p>The key is to use font pairs.</p>
<p>The idea is that using two fonts for different elements on the page provides a helpful contrast. Again, this helps make elements stand out and makes your page easier to view.</p>
<p>But you shouldn’t pair up any old fonts.</p>
<p>For <a target="_blank" href="https://www.canva.com/learn/combining-fonts-10-must-know-tips-from-a-designer/">a bunch of aesthetic reasons</a>, some font pairings look much better than others.</p>
<p>Don’t worry about figuring this out yourself, though. As usual, there are resources on the Internet to help you.</p>
<p>Check out <a target="_blank" href="https://www.freecodecamp.org/news/how-to-make-your-front-end-projects/fontpair.co">fontpair.co</a>. It lets you browse different font pairings and see how they look together.</p>
<p>Once you find a pairing you like, the quickest way to use them in your project is to head over to <a target="_blank" href="https://fonts.google.com/">Google Fonts</a>.</p>
<ul>
<li>Search for the fonts you want</li>
<li>Add them to your project</li>
<li>Include the link in your HTML <code>&lt;head&gt;</code> element</li>
<li>Reference the fonts in the stylesheet</li>
</ul>
<p>See below for an example built on top of the basic page you saw earlier.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/pg2020/embed/ZEGaraM" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>You can also improve the appearance by controlling the font size and text alignment.</p>
<p>Doesn’t that look considerably better? And after only two easy steps.</p>
<h3 id="heading-get-a-colour-scheme">Get a colour scheme</h3>
<p>I’m no designer, but I appreciate the value of learning <a target="_blank" href="https://lifehacker.com/learn-the-basics-of-color-theory-to-know-what-looks-goo-1608972072">the basics of colour theory</a>.</p>
<p>In short, the colours you use on your page go a long way to creating an impression.</p>
<p>For example:</p>
<ul>
<li>Bright, exuberant colours create an energetic feel</li>
<li>Light, toned down shades create a more corporate impression</li>
<li>Dark, contrasting colours create a more dramatic impression</li>
<li>Brand colours create a consistent identity</li>
</ul>
<p>Again, it pays to choose your colours carefully.</p>
<p>The theory goes that the relationship between the colours you use also impacts the appearance of your site.</p>
<ul>
<li>Analogous colours can create a consistent, harmonious appearance</li>
<li>Complementary colours create a pleasing contrast</li>
<li>Triadic colours provide both contrast and balance</li>
</ul>
<p>It pays to pick a colour scheme carefully.</p>
<p>Luckily, there are many ways to do this. Just Google "colour scheme generator" and you will be spoiled for choice.</p>
<p>One of my favourite tools is <a target="_blank" href="http://colormind.io/template/paper-dashboard/">colormind.io</a>. It generates a colour scheme and lets you preview it on a template.</p>
<p>Of course, rules can be broken. Using a more discordant colour scheme can be jarring, but used carefully can give a page an edgier, more stand-out appearance.</p>
<p>See the code below has been updated to use a simple colour scheme.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/pg2020/embed/MWwOQXq" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<h3 id="heading-add-some-structure">Add some structure</h3>
<p>No matter how well-presented your page is right now, it can be improved by shaking things up a bit.</p>
<p>Adding in sections and structure can break up the monotony of a longer page.</p>
<p>By creating clear bounds between elements, you can create a logical structure and/or hierarchy. This will make it easier for the viewer to understand your page layout.</p>
<p>Keep to the same colour scheme, but vary things up a little.</p>
<p>See the example below has been extended to include more of a structure. The content is divided into <code>&lt;header&gt;</code>, <code>&lt;footer&gt;</code> and <code>&lt;div class="content"&gt;</code> elements.</p>
<p>The example also uses a media query to make the page present better on smaller devices.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/pg2020/embed/zYGPRVg" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>If you want to learn more, try looking into:</p>
<ul>
<li><a target="_blank" href="https://css-tricks.com/snippets/css/complete-guide-grid/">CSS Grid</a> for creating a layout</li>
<li><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox">Flexbox</a> for creating layouts</li>
<li><a target="_blank" href="https://getbootstrap.com/docs/3.4/css/">Bootstrap</a> for creating responsive designs</li>
<li>Responsive design with <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Media_queries">media queries</a></li>
</ul>
<p>It didn’t take much rewriting, but the effect is very noticeable.</p>
<h3 id="heading-add-some-images-and-icons">Add some images and icons</h3>
<p>Humans are typically visual creatures. A well placed image or icon can go a long way to making a page easier to view and understand.</p>
<p>The code below adds a simple image to the main content. See how it is included in the <code>&lt;div class="content"&gt;</code> element and the width is set to 100%? This keeps the structure of the page consistent.</p>
<p>Remember, images should be considered in the context of the overall colour scheme.</p>
<p>You don’t need to be a budding CSS artist or Photoshop wizard to do this. If you need access to high quality photos quickly, your can search <a target="_blank" href="https://unsplash.com/">Unsplash</a> for free-to-use images.</p>
<p>Even a few free icons can make a difference.</p>
<p>The example below adds a simple menu icon to the top right corner. You could also add icons to your Github profile, or other online profiles.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/pg2020/embed/zYGPWrY" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>You can quickly add free icons from these resources:</p>
<ul>
<li><a target="_blank" href="https://fontawesome.com/">Fontawesome</a></li>
<li><a target="_blank" href="https://icons.getbootstrap.com/">Bootstrap</a></li>
<li><a target="_blank" href="https://material.io/resources/icons/?style=baseline">Google</a></li>
<li><a target="_blank" href="https://www.keycdn.com/blog/icon-library">Plenty of others</a></li>
</ul>
<h3 id="heading-add-some-animations">Add some animations</h3>
<p>This final tip is a nice-to-have for sure.</p>
<p>As anyone who used PowerPoint during the 2000s will know, animations need to be used carefully.</p>
<p>Too many animations can be confusing and irritating for users.</p>
<p>But used properly, they can make a page much more interactive and visually appealing.</p>
<p>There are lots of ways to add animations to your site. You can use <a target="_blank" href="https://www.w3schools.com/cssref/sel_hover.asp">CSS selectors</a> to change style in response to certain events, such as when the user hovers on that element.</p>
<p>The example below changes the image opacity to 50% when the user hovers over it.</p>
<p>Another option is to use is <a target="_blank" href="https://daneden.github.io/animate.css/">Animate.css</a>. This provides a number of pre-built animations that you can use straight out-of-the-box.</p>
<p>The code below adds a subtle animation to the buttons when it is clicked.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/pg2020/embed/xxGPWEZ" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>Remember — with animation, less is usually more!</p>
<h4 id="heading-the-final-result">The final result</h4>
<p>See <a target="_blank" href="https://github.com/pg0408/frontend-demo">this Github repo</a> for overall evolution of the page.</p>
<p>The design still has a long way to go. But just by following some simple guidelines, it looks much better than it did at the start.</p>
<p>Here’s a quick review of each of the tips:</p>
<ol>
<li>Add some negative space</li>
<li>Choose a pair of fonts</li>
<li>Pick a coherent colour scheme</li>
<li>Add some structure</li>
<li>Add a few icons or images</li>
<li>(Optionally) add some animation</li>
</ol>
<p>Leave a response below if you found this quick guide helpful. Do you have any tips or tricks you want to share?</p>
<p>Thanks for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Best Bootstrap Examples ]]>
                </title>
                <description>
                    <![CDATA[ Bootstrap is a popular front-end framework for web development. It contains pre-built components and design elements to style HTML content. Modern browsers such as Chrome, Firefox, Opera, Safari, and Internet Explorer support Bootstrap. Bootstrap inc... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-best-bootstrap-examples/</link>
                <guid isPermaLink="false">66c360cde9895571912a0d49</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 04 Dec 2019 00:27:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9edf740569d1a4ca3fa4.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Bootstrap is a popular front-end framework for web development. It contains pre-built components and design elements to style HTML content. Modern browsers such as Chrome, Firefox, Opera, Safari, and Internet Explorer support Bootstrap.</p>
<p>Bootstrap includes a responsive grid system for varying layouts. It is a great starting point for building a mobile friendly website. It also includes optional JavaScript functionality, such as collapsible content, carousels, and modals.</p>
<h2 id="heading-why-use-bootstrap">Why Use Bootstrap?</h2>
<p>Bootstrap provides an easy solution both for design and responsiveness. It is packed with beautiful elements that can be further styled with your own custom CSS, as well as a full grid system to keep your website responsive across all screens while using a clean and understandable syntax. You can build a professional looking website without any CSS or JavaScript and easily customize the elements if needed</p>
<h2 id="heading-version-history">Version History</h2>
<p>Twitter originally developed the Bootstrap framework as an internal tool. They released it as an open source project in August of 2011.</p>
<p>Bootstrap 2 was released in January 2012. One of the primary features was the introduction of the 12 column responsive grid system. Bootstrap 3 appeared in August of 2013, switching to a flat design and a mobile-first approach. Bootstrap 4 is available in beta as of August 2017, and now includes Sass and Flexbox.</p>
<p>Bootstrap 4 was in development for two years before releasing some beta versions during 2017, while the first stable release was out in January 2018. Some notable changes include:</p>
<ul>
<li>Moved from Less to Sass;</li>
<li>Moved to Flexbox and improved grid system;</li>
<li>Added cards (replacing wells, thumbnails, and panels);</li>
<li>And much more!</li>
</ul>
<p>At the time of writing, Bootstrap's latest release is <a target="_blank" href="http://blog.getbootstrap.com/2018/07/24/bootstrap-4-1-3/">4.1.3</a>. If you would like to keep up with any news of announcements, follow them <a target="_blank" href="http://blog.getbootstrap.com/">here</a>.</p>
<h2 id="heading-boostrap-features">Boostrap Features</h2>
<ul>
<li>Bootstrap 3 supports the latest versions of Google Chrome, Firefox, Internet Explorer, Opera and Safari (except on Windows). It additionally supports back to IE8 and the latest Firefox Extended Support Release (ESR).[12]</li>
<li>Since 2.0, Bootstrap supports responsive web design. This means the layout of web pages adjusts dynamically, taking into account the characteristics of the device which is being used (desktop, tablet, mobile phone).</li>
<li>Starting with version 3.0, Bootstrap adopted a mobile-first design philosophy, emphasizing responsive design by default.</li>
<li>Version 4.0 added Sass and flexbox support.</li>
<li>Version 4.1 Added new custom range form control.</li>
<li>Bootstrap does not restrict you to a fixed CSS format but allows you to develop quickly allowing style overwrites using cascading to add/edit the default styles.</li>
</ul>
<h2 id="heading-get-started">Get Started</h2>
<p>Bootstrap is a free and open source framework developed by Twitter that provides a variety of templates for use with front-end web development. Using Bootstrap makes it easy to design a fully responsive website and is a framework worth learning.</p>
<h3 id="heading-how-do-i-add-bootstrap-to-my-page">How do I add Bootstrap to my page?</h3>
<p>Adding bootstrap to your page is a fast process, just add the following to the <code>&lt;head&gt;</code> tags in your code.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span>
</code></pre>
<p><em>Note: These are only examples and may change without notice. Please refer to a CDN for current links to include in your project.</em></p>
<p>Some Bootstrap components require other JavaScript files, check out the Bootstrap documentation <a target="_blank" href="https://getbootstrap.com/docs/4.1/getting-started/introduction/#js">here</a> to find the latest scripting files.</p>
<p>You will also need to add the following between the <code>body</code> tags in your code. With bootstrap you'll be using <code>&lt;div&gt;</code> tags when using many of Bootstrap's features, e</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"alert alert-success"</span> <span class="hljs-attr">role</span>=<span class="hljs-string">"alert"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">strong</span>&gt;</span>Congratulations!<span class="hljs-tag">&lt;/<span class="hljs-name">strong</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Bootstrap is now working on this page<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p><strong>Congratulations!</strong></p>
<p>Bootstrap is now working on this page</p>
<h3 id="heading-installing-bootstrap-with-a-package-manager">Installing Bootstrap with a Package Manager</h3>
<p>A popular package manager is NPM or Node Package Manager. You will need to install Node.js, which includes the Node Package Manager. Visit <a target="_blank" href="https://nodejs.org/en/">Node.js</a> and download the necessary files based on your OS, and then install them.</p>
<p>Once installed and setup, open up the command line or console, and type the following in the the project folder you wish to use Bootstrap with. At the time of writing this will install Bootstrap version 4.0.0</p>
<pre><code class="lang-html">npm install bootstrap@4.0.0 --save
</code></pre>
<p>Once NPM has finished downloading and installing Bootstrap 4, there will be a new folder called <code>node_modules</code> within your project folder if it wasn't already there.</p>
<ul>
<li><code>/bootstrap</code> which contains the CSS and Sass version of our files.</li>
<li><code>/jquery</code> which is used by Bootstrap in various components.</li>
<li><code>/tether</code> which is a library for element positioning.</li>
</ul>
<h2 id="heading-grid-system">Grid System</h2>
<p>In a nutshell, the Bootstrap grid system helps you create responsive layouts, and it is comprised of a system of rows and columns that helps you structure your content.</p>
<p>Rows are horizontal groups of columns, and each page has a maximum of 12 columns per row. Within each row, the content is placed inside the columns and it can span anywhere between 1 to 12 columns.</p>
<p>Bootstrap has five different types of grid tiers: Extra small, Small, Medium, Large and Extra large. There is a breakpoint defined for each of these grid tiers. Bootstrap uses pixels to define the grid tier breakpoints.</p>
<h3 id="heading-container">Container</h3>
<p>The container is the outer most element that <em>contains</em> your grid. Use <code>container</code> for a fixed-width container in the middle of the screen (add an extra margin on larger screens) or <code>container-fluid</code> for full width.</p>
<pre><code class="lang-text">&lt;div class="container"&gt;&lt;/div&gt;
</code></pre>
<h3 id="heading-row">Row</h3>
<p>Use <code>row</code> to group your columns. This will keep everything lined up properly and help you structure your grid.</p>
<pre><code class="lang-text">&lt;div class="row"&gt;&lt;/div&gt;
</code></pre>
<h3 id="heading-columns">Columns</h3>
<p>Column classes indicate the number of columns you’d like to use out of the possible 12 per row. For example <code>col-sm-6</code> would mean your columns use up half the width of the <code>row</code> on a small screen, and <code>col-lg-4</code>would use up a third on a large screen.</p>
<p>Here is how you would define a class prefix to use up one column width on the various screen sizes:</p>
<ul>
<li><strong>Extra Small</strong> <code>col-1</code></li>
<li><strong>Small</strong> <code>col-sm-1</code></li>
<li><strong>Medium</strong> <code>col-md-1</code></li>
<li><strong>Large</strong> <code>col-lg-1</code></li>
<li><strong>Extra Large</strong> <code>col-xl-1</code></li>
</ul>
<pre><code class="lang-text">&lt;div class="col-sm-1"&gt;&lt;/div&gt;
</code></pre>
<h3 id="heading-example">Example</h3>
<p>A full width grid that has four columns, each taking up a full row on xs screens, half a row on sm and md screens, and a quarter of the width of the row on screens that are large and above:</p>
<pre><code class="lang-text">&lt;div class="container-fluid"&gt;
  &lt;div class="row"&gt;
    &lt;div class="col-12 col-sm-6 col-lg-4"&gt;First Column&lt;/div&gt;
    &lt;div class="col-12 col-sm-6 col-lg-4"&gt;Second Column&lt;/div&gt;
    &lt;div class="col-12 col-sm-6 col-lg-4"&gt;Third Column&lt;/div&gt;
    &lt;div class="col-12 col-sm-6 col-lg-4"&gt;Forth Column&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<p><em>Note that <code>col-md</code> and <code>col-xl</code> are not defined, where a size is not defined, it will default down to the next smaller size that has been specified.</em></p>
<p>Bootstrap provides a ready-made 12 column grid system for use in layouts. Consider the following code.</p>
<pre><code class="lang-html">   <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-6"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-6"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
   <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>where:</p>
<pre><code class="lang-text">- col = column
- md = screen size
- 6 = column width
</code></pre>
<p>As a 12 column grid system, all user defined grid column widths must add up to 12.</p>
<p>Screen size values can be assigned as follows:</p>
<ul>
<li>xs - &lt; 768px Phones</li>
<li>sm - &lt; 992px Tablets</li>
<li>md - &lt; 1200px Laptops</li>
<li>lg - &gt; 1200px Desktops</li>
</ul>
<p>The following code and image shows what is possible using different column widths.</p>
<pre><code class="lang-html">    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-6"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-6"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-4"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-4"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-4"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-3"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-3"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-3"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-3"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-2"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-2"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-2"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-2"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-2"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-2"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"example col-md-1"</span>&gt;</span>Content<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-39.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-buttons">Buttons</h2>
<p>The Bootstrap framework provides you with various styling options for buttons. These styles help you provide a visual representation to the user of what the button may do.</p>
<h3 id="heading-how-to-use">How To Use</h3>
<p>To use bootstrap buttons you need to follow the same steps that you would to create a button in HTML, except that you also apply the applicable CSS class to the button. A code example has been provided below.</p>
<p><strong>Code Example</strong>:</p>
<p><code>&lt;button type="button" class="btn btn-primary"&gt;Primary&lt;/button&gt;</code></p>
<p>You can also use bootstrap buttons with the <code>&lt;a&gt;</code> and <code>&lt;input&gt;</code> elements as shown in the examples below. As per the <a target="_blank" href="https://getbootstrap.com/docs/4.0/components/buttons/">Bootstrap</a> documentation,</p>
<p>When using button classes on elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a <code>role="button"</code>to appropriately convey their purpose to assistive technologies such as screen readers.</p>
<p><code>&lt;a class="btn btn-primary" href="#" role="button"&gt;This button is a link&lt;/a&gt;</code></p>
<p><code>&lt;input class="btn btn-primary" type="submit" value="Submit"&gt;</code></p>
<h3 id="heading-button-class-list">Button Class List</h3>
<p>This is a list of the CSS classes that bootstrap provides for buttons. They give the background color to the buttons.</p>
<p><code>.btn</code> This is bootstrap's basic button. It is a prerequisite if you want other bootstrap buttons to work properly.</p>
<p><code>&lt;button type="button" class="btn"&gt;Basic&lt;/button&gt;</code></p>
<p><code>.btn-primary</code> Bootstrap's primary button. Default color displays #007bff.</p>
<p><code>&lt;button type="button" class="btn btn-primary"&gt;Primary&lt;/button&gt;</code></p>
<p><code>.btn-secondary</code> Bootstrap's secondary button. Default color displays #6c757d.</p>
<p><code>&lt;button type="button" class="btn btn-secondary"&gt;Secondary&lt;/button&gt;</code></p>
<p><code>.btn-success</code> Bootstrap's success button. Default color displays #28a745.</p>
<p><code>&lt;button type="button" class="btn btn-success"&gt;Success&lt;/button&gt;</code></p>
<p><code>.btn-info</code> Bootstrap's info button. Default color displays #17a2b8.</p>
<p><code>&lt;button type="button" class="btn btn-info"&gt;Info&lt;/button&gt;</code></p>
<p><code>.btn-warning</code> Bootstrap's warning button. Default color displays #ffc107.</p>
<p><code>&lt;button type="button" class="btn btn-warning"&gt;Warning&lt;/button&gt;</code></p>
<p><code>.btn-danger</code> Bootstrap's danger button. Default color displays #dc3545.</p>
<p><code>&lt;button type="button" class="btn btn-danger"&gt;Danger&lt;/button&gt;</code></p>
<p><code>.btn-link</code> Bootstrap's link button.</p>
<p><code>&lt;button type="button" class="btn btn-link"&gt;Link&lt;/button&gt;</code></p>
<p><code>.btn-light</code> Bootstrap's light button.</p>
<p><code>&lt;button type="button" class="btn btn-light"&gt;Light&lt;/button&gt;</code></p>
<p><code>.btn-dark</code> Bootstrap's dark button.</p>
<p><code>&lt;button type="button" class="btn btn-dark"&gt;Dark&lt;/button&gt;</code></p>
<p><code>.btn-dark</code> This is bootstrap's dark button.</p>
<p><code>.btn-secondary</code> This is bootstrap's secondary button.</p>
<h3 id="heading-button-sizes">Button Sizes</h3>
<p>This is a list of the CSS classes for different size of the buttons.</p>
<p><code>.btn-lg</code> Bootstrap's large button.</p>
<p><code>&lt;button type="button" class="btn btn-lg"&gt;Large&lt;/button&gt;</code></p>
<p><code>.btn-md</code> This is bootstrap's medium button.</p>
<p><code>&lt;button type="button" class="btn btn-md"&gt;Medium&lt;/button&gt;</code></p>
<p><code>.btn-sm</code> Bootstrap's small button.</p>
<p><code>&lt;button type="button" class="btn btn-sm"&gt;Small&lt;/button&gt;</code></p>
<p><code>.btn-md</code> This is bootstrap's medium button.</p>
<p><code>.btn-xs</code> This is bootstrap's extra small button.</p>
<p><code>&lt;button type="button" class="btn btn-xs"&gt;Extra Small&lt;/button&gt;</code></p>
<p><code>.btn-block</code> This is bootstrap's full width button.</p>
<h3 id="heading-disabled-button-state">Disabled Button State</h3>
<p>This is used to show that the button is disabled by fading the button. This can be achieved through adding "disabled" to the <code>&lt;button&gt;</code> tag.</p>
<p><code>.btn-block</code> This is bootstrap's block level button. They actually span the entire width of their parent element. For example, a form element with a width of 200px, that means the btn-block button would have a width of 200px.</p>
<h3 id="heading-outlined-buttons">Outlined Buttons</h3>
<p>It is possible to also have outlined buttons rather than fully colored buttons. This is achieved by placing the mid fix <code>outline</code> between the button class you want. A sample usage would be as follows:</p>
<p><code>&lt;button type="button" class="btn btn-outline-primary"&gt;Primary&lt;/button&gt;</code></p>
<p><code>&lt;button type="button" class="btn btn-outline-secondary"&gt;Secondary&lt;/button&gt;</code></p>
<p><code>&lt;button type="button" class="btn btn-outline-success"&gt;Success&lt;/button&gt;</code></p>
<p><code>&lt;button type="button" class="btn btn-outline-danger"&gt;Danger&lt;/button&gt;</code></p>
<p><code>&lt;button type="button" class="btn btn-outline-warning"&gt;Warning&lt;/button&gt;</code></p>
<p><code>&lt;button type="button" class="btn btn-outline-info"&gt;Info&lt;/button&gt;</code></p>
<p><code>&lt;button type="button" class="btn btn-outline-light"&gt;Light&lt;/button&gt;</code></p>
<p><code>&lt;button type="button" class="btn btn-outline-dark"&gt;Dark&lt;/button&gt;</code></p>
<p>Outlined buttons are a part of Bootstrap since version 4 - please be sure that you are using the right version if you are unable to get them to work.</p>
<h3 id="heading-inline-buttons">Inline Buttons</h3>
<p>You can create inline button row by adding <code>.d-inline-block</code> class to the element which sets the display of the button to inline block. For example : <code>&lt;button class="btn btn-primary d-inline-block btn-lg"&gt;&lt;/button&gt;</code></p>
<h3 id="heading-grouping-of-buttons">Grouping of Buttons</h3>
<p>It is possible to group more than one button for certain uses like pagination. Grouping buttons can be done by making a parent <code>div</code> for all buttons you want to group, using the <code>.btn-group</code> class on this <code>div</code>:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn-group"</span> <span class="hljs-attr">role</span>=<span class="hljs-string">"group"</span> <span class="hljs-attr">aria-label</span>=<span class="hljs-string">"Basic example"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-secondary"</span>&gt;</span>Left<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-secondary"</span>&gt;</span>Middle<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-secondary"</span>&gt;</span>Right<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<h2 id="heading-dropdowns">Dropdowns</h2>
<p>Bootstrap provides Dropdowns as a plugin for displaying lists of links. A dropdown is a button which toggles displaying a list of links.</p>
<p>Bootstrap’s dropdowns are designed to be generic and applicable to a variety of situations. For instance, it is possible to create dropdowns that contain search fields or login forms.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-secondary dropdown-toggle"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"dropdownMenuButton"</span> <span class="hljs-attr">data-toggle</span>=<span class="hljs-string">"dropdown"</span> <span class="hljs-attr">aria-haspopup</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">aria-expanded</span>=<span class="hljs-string">"false"</span>&gt;</span>
    Dropdown example
  <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-menu"</span> <span class="hljs-attr">aria-labelledby</span>=<span class="hljs-string">"dropdownMenuButton"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-item"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Action<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-item"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Another action<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-item"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Something else here<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>The <em>.dropdown</em> class indicates a dropdown menu.</p>
<p>To open the dropdown menu, use a button or a link with a class of <em>.dropdown-toggle</em> and the <em>data-toggle="dropdown</em> attribute.</p>
<p>The <em>.caret</em> class creates a caret arrow icon (▼), which indicates that the button is a dropdown.</p>
<p>Add the <em>.dropdown-menu</em> class to a unordered list element to actually build the dropdown menu.</p>
<h2 id="heading-navigation-bar">Navigation Bar</h2>
<p>The Bootstrap framework provides you with a feature called navigation bars. In short, a navigation bar (also referred to as a navbar) is a header at the top of the page to display navigational information.</p>
<h3 id="heading-how-to-use-1">How To Use</h3>
<p>To use Bootstrap Navigation Bars you add a <code>&lt;nav&gt;</code> element to the top inside the <code>&lt;body&gt;</code> element of your webpage. There are various styles you can add to customize the display of your navbars.</p>
<p>This is the code needed to make a basic navbar:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h3 id="heading-navbar-styles">Navbar Styles</h3>
<p>Bootstrap provides a set of classes in the Bootstrap framework to style your navbars. These classes are as followed:</p>
<ul>
<li><code>navbar navbar-default</code> This is the default style for your navbars.</li>
<li><code>navbar navbar-inverse</code> This is similar to the default style except the colors are inverted.</li>
</ul>
<h3 id="heading-adding-drop-down-menus-to-the-navbar">Adding drop-down menus to the navbar</h3>
<p>You can include a drop-down menu inside a navbar. This feature requires you to include Bootstrap's javascript file for it to work.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-toggle"</span> <span class="hljs-attr">data-toggle</span>=<span class="hljs-string">"dropdown"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Drop down
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"caret"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-menu"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Item 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Item 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Item 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
</code></pre>
<h3 id="heading-adding-buttons-to-the-navbar">Adding buttons to the navbar</h3>
<p>You can add buttons on the navbar. The existing Bootstrap Button classes work however you'll need to include the class <code>navbar-btn</code> to the end of the class list.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn navbar-btn"</span>&gt;</span>Button<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
</code></pre>
<h3 id="heading-adding-brand-logo-or-name-to-the-navbar">Adding brand logo or name to the navbar</h3>
<p>The <code>navbar-brand</code> class can be applied to most elements, but an anchor works best as some elements might require utility classes or custom styles.</p>
<pre><code class="lang-html"><span class="hljs-comment">&lt;!-- As a link --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-light bg-light"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Navbar<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<pre><code class="lang-html"><span class="hljs-comment">&lt;!-- As a heading --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-light bg-light"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand mb-0 h1"</span>&gt;</span>Navbar<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h3 id="heading-adding-forms-to-the-navbar">Adding forms to the navbar</h3>
<p>You can also add forms to the navbar. This could be used for tasks such as a search field, quick login field, etc.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-form navbar-right"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Search"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-default"</span>&gt;</span>Search<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>  
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<h3 id="heading-aligning-elements-to-the-right-on-the-navbar">Aligning elements to the right on the navbar</h3>
<p>In some cases you might want to align elements in a navbar to the right (for example a login or sign-up button.). To do this you'll need to use the <code>navbar-right</code> class.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav navbar-right"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Action Link #1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Action Link #2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h3 id="heading-displaying-the-navbar-independent-of-scrolling">Displaying the navbar independent of scrolling</h3>
<p>In some cases you might want to keep the navbar at the top or bottom of the screen regardless of scrolling. You will need to add either the <code>navbar-fixed-top</code> or <code>navbar-fixed-bottom</code> class to the <code>&lt;nav&gt;</code>element.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default navbar-fixed-top"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h3 id="heading-collapsing-the-navbar">Collapsing the navbar</h3>
<p>On a small screen (such as a phone or tablet) the navbar is going to take up too much space. Luckily the option to collase the navbar exists. You can accomplish this using the following example.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h2 id="heading-jumbotron">Jumbotron</h2>
<p><code>Jumbotron</code> is Lightweight, flexible component for showcasing hero unit style content. <code>Jumbotron</code> is a responsive component which the main goal is to focus visitor's attention or highlight the special piece of information.</p>
<p>Jumbotron make use of almost any other bootstrap code to additionally increase its engagement value. It's operate with images,enlarged fonts,different backgorund styles etc.</p>
<h3 id="heading-most-attracting-features-of-jumbotron">Most Attracting features of jumbotron</h3>
<ul>
<li>Showcase the marketing messages on your site</li>
<li>Project presentation</li>
<li>Article introduction</li>
<li>Image showcase</li>
</ul>
<h3 id="heading-how-to-use-2">How to use</h3>
<p>Use a <code>&lt;div&gt;</code> element with class <code>.jumbotron</code> to create a jumbotron:</p>
<pre><code class="lang-text">&lt;div class="jumbotron"&gt;
  &lt;h1 class="display-4"&gt;Hello, world!&lt;/h1&gt;
  &lt;p class="lead"&gt;This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.&lt;/p&gt;
  &lt;hr class="my-4"&gt;
  &lt;p&gt;It uses utility classes for typography and spacing to space content out within the larger container.&lt;/p&gt;
  &lt;a class="btn btn-primary btn-lg" href="#" role="button"&gt;Learn more&lt;/a&gt;
&lt;/div&gt;
</code></pre>
<h3 id="heading-fluid-jumbotron">Fluid jumbotron</h3>
<p>To make the jumbotron full width, and without rounded corners, add the <code>.jumbotron-fluid</code> modifier class and add a <code>.container</code> or <code>.container-fluid</code> within.</p>
<pre><code class="lang-text">&lt;div class="jumbotron jumbotron-fluid"&gt;
  &lt;div class="container"&gt;
    &lt;h1 class="display-4"&gt;Fluid jumbotron&lt;/h1&gt;
    &lt;p class="lead"&gt;This is a modified jumbotron that occupies the entire horizontal space of its parent.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<h2 id="heading-forms">Forms</h2>
<p>Bootstrap framework provides a form feature which you can use to create beautiful HTML forms easily. Using the Bootstrap form gives each individual form element a unified global style. Bootstrap form adds the right spacing and look to each element.</p>
<p>Each Bootstrap form element should have a class <em>form-control</em>. This class is how Bootstrap knows which elements to style. All textual elements like <strong>input</strong>, <strong>textarea</strong> and <strong>select</strong> that have the <em>form-control</em> class will have 100% width by default.</p>
<p>There are two types of Bootstrap forms, which are:</p>
<ul>
<li>Inline form - creates the form on a single line. Useful for login forms in a nav bar</li>
<li>Horizontal form - creates a form with each element in a different row</li>
</ul>
<h3 id="heading-example-of-a-basic-form">Example of a basic form</h3>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"exampleInputEmail1"</span>&gt;</span>Email address<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"exampleInputEmail1"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Email"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"exampleInputPassword1"</span>&gt;</span>Password<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"password"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"exampleInputPassword1"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Password"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"exampleInputFile"</span>&gt;</span>File input<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"file"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"exampleInputFile"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">p</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"help-block"</span>&gt;</span>Example block-level help text here.<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span>&gt;</span> Check me out
    <span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-default"</span>&gt;</span>Submit<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<h3 id="heading-example-of-an-inline-form">Example of an inline form</h3>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-inline"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"exampleInputName2"</span>&gt;</span>Name<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"exampleInputName2"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Jane Doe"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"exampleInputEmail2"</span>&gt;</span>Email<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"exampleInputEmail2"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"jane.doe@example.com"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-default"</span>&gt;</span>Send invitation<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<h3 id="heading-example-of-horizontal-form">Example of horizontal form</h3>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-horizontal"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"inputEmail3"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-2 control-label"</span>&gt;</span>Email<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-10"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"inputEmail3"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Email"</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"inputPassword3"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-2 control-label"</span>&gt;</span>Password<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-10"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"password"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"inputPassword3"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Password"</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-offset-2 col-sm-10"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span>&gt;</span> Remember me
        <span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-offset-2 col-sm-10"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-default"</span>&gt;</span>Sign in<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<h2 id="heading-form-inputs">Form Inputs</h2>
<p>Bootstrap supports the following form controls:</p>
<ol>
<li>input</li>
<li>textarea</li>
<li>checkbox</li>
<li>radio</li>
<li>select</li>
<li>range</li>
</ol>
<h3 id="heading-1-input">1. Input</h3>
<p>Bootstrap supports all the HTML5 input types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.</p>
<p><strong>Note: Inputs will NOT be fully styled if their type is not properly declared!</strong></p>
<p>The following example contains two input elements; one of type text and one of type password:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"usr"</span>&gt;</span>Name:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"usr"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"pwd"</span>&gt;</span>Password:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"password"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"pwd"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<h3 id="heading-2-textarea">2. Textarea</h3>
<p>The following example contains a textarea:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"comment"</span>&gt;</span>Comment:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">textarea</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">rows</span>=<span class="hljs-string">"5"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"comment"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">textarea</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<h3 id="heading-3-checkboxes">3. Checkboxes</h3>
<p>Checkboxes are used if you want the user to select any number of options from a list of preset options.</p>
<p>The following example contains three checkboxes. The last option is disabled:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">""</span>&gt;</span>Option 1<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">""</span>&gt;</span>Option 2<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox disabled"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">""</span> <span class="hljs-attr">disabled</span>&gt;</span>Option 3<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>Use the <strong>.checkbox-inline</strong> class if you want the checkboxes to appear on the same line:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox-inline"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">""</span>&gt;</span>Option 1<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox-inline"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">""</span>&gt;</span>Option 2<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"checkbox-inline"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"checkbox"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">""</span>&gt;</span>Option 3<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
</code></pre>
<h3 id="heading-4-radio-buttons">4. Radio Buttons</h3>
<p>Radio buttons are used if you want to limit the user to just one selection from a list of preset options.</p>
<p>The following example contains three radio buttons. The last option is disabled:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"radio"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"optradio"</span>&gt;</span>Option 1<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"radio"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"optradio"</span>&gt;</span>Option 2<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"radio disabled"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"optradio"</span> <span class="hljs-attr">disabled</span>&gt;</span>Option 3<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>Use the <strong>.radio-inline</strong> class if you want the checkboxes to appear on the same line:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"radio-inline"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"optradio"</span>&gt;</span>Option 1<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"radio-inline"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"optradio"</span>&gt;</span>Option 2<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"radio-inline"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"radio"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"optradio"</span>&gt;</span>Option 3<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
</code></pre>
<h3 id="heading-5-select-list">5. Select (List)</h3>
<p>Select lists are used if you want to allow the user to pick from multiple options.</p>
<p>The following example contains a dropdown list (select list):</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"sel1"</span>&gt;</span>Select list:<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">select</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"sel1"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">option</span>&gt;</span>1<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">option</span>&gt;</span>2<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">option</span>&gt;</span>3<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">option</span>&gt;</span>4<span class="hljs-tag">&lt;/<span class="hljs-name">option</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">select</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<h3 id="heading-6-range">6. Range</h3>
<p>Select lists are used if you want to allow the user to pick from multiple options.</p>
<p>The following example contains a dropdown list (select list):</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"formControlRange"</span>&gt;</span>Example Range input<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"range"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control-range"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"formControlRange"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<h3 id="heading-how-to-make-bootstrap-inputs-accessible">How to make Bootstrap Inputs Accessible</h3>
<p>Input fields should have labels or some other form of identifier such as WAI-ARIA tags to meet the Web Content Accessibility Guidelines or <a target="_blank" href="https://www.w3.org/WAI/tutorials/forms/">WCAG</a> for short. In order for screen readers to accurately convey to a user what labels are associated with which inputs the labels should reference the corresponding input.</p>
<p>This can be done by utlizing the <code>for</code> parameter in the HTML:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">label</span> <span class="hljs-attr">for</span>=<span class="hljs-string">"email-input"</span>&gt;</span>Enter Email<span class="hljs-tag">&lt;/<span class="hljs-name">label</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"email-input"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Enter Email"</span>&gt;</span>
</code></pre>
<p>The label <code>for</code> attribute <strong>always</strong> references the input field by its <strong>ID</strong>. This tells the screen reader that this label is definitely for this input field which will minimize confusion for any users who are using a screen reader to visit a web site. In the above example, if a user clicks on the actual word "Enter email", then the user will be able to type. If the 'for' attribute was not attached to the label, then if a user clicks on the words 'Enter email,' nothing would happen. The user would have to click on the actual email input field to be able to type.</p>
<h2 id="heading-tables">Tables</h2>
<h3 id="heading-basic-table">Basic Table</h3>
<p>In order to achieve the basic styling example add the base class <code>.table</code> to any <code>&lt;table&gt;</code> element.</p>
<pre><code class="lang-text">&lt;table class="table"&gt;
  ...
&lt;/table&gt;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-40.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-table-head">Table Head</h3>
<p>You can define separate header section in your table structure. This is example</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">table</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"table"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">thead</span> <span class="hljs-attr">class</span>=<span class="hljs-string">theat-dark</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">th</span> <span class="hljs-attr">scope</span>=<span class="hljs-string">"col"</span>&gt;</span>#<span class="hljs-tag">&lt;/<span class="hljs-name">th</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">th</span> <span class="hljs-attr">scope</span>=<span class="hljs-string">"col"</span>&gt;</span>First<span class="hljs-tag">&lt;/<span class="hljs-name">th</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">th</span> <span class="hljs-attr">scope</span>=<span class="hljs-string">"col"</span>&gt;</span>Last<span class="hljs-tag">&lt;/<span class="hljs-name">th</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">th</span> <span class="hljs-attr">scope</span>=<span class="hljs-string">"col"</span>&gt;</span>Handle<span class="hljs-tag">&lt;/<span class="hljs-name">th</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">thead</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">tbody</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">th</span> <span class="hljs-attr">scope</span>=<span class="hljs-string">"row"</span>&gt;</span>1<span class="hljs-tag">&lt;/<span class="hljs-name">th</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Bob<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>Robo<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>@bro<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">tbody</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">table</span>&gt;</span>
</code></pre>
<h3 id="heading-table-striped">Table Striped</h3>
<p>In order to achieve the striped row effect (zebra-striping) in tables use <code>.table-striped</code> in addition to <code>.table</code> on any <code>&lt;table&gt;</code> element. Striped tables are styled via the <code>:nth-child</code> CSS selector, which is not available in Internet Explorer 8.</p>
<pre><code class="lang-text">&lt;table class="table table-striped"&gt;
  ...
&lt;/table&gt;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-41.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-table-bordered">Table Bordered</h3>
<p>In order to achieve the bordered table use <code>.table-bordered</code> in addition to <code>.table</code> on any <code>&lt;table&gt;</code>element.</p>
<pre><code class="lang-text">&lt;table class="table table-bordered"&gt;
  ...
&lt;/table&gt;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-42.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-table-hover">Table Hover</h3>
<p>In order to achieve the hover row effect on tables, use <code>.table-hover</code> in addition to <code>.table</code> on any <code>&lt;table&gt;</code> element.</p>
<pre><code class="lang-text">&lt;table class="table table-hover"&gt;
  ...
&lt;/table&gt;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-43.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-table-condensed">Table Condensed</h3>
<p>In order to achieve the condensed table use <code>.table-condensed</code> in addition to <code>.table</code> on any <code>&lt;table&gt;</code>element.</p>
<pre><code class="lang-text">&lt;table class="table table-condensed"&gt;
  ...
&lt;/table&gt;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-44.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-table-responsive">Table Responsive</h3>
<p>In order to achieve the responsive table by wrapping any <code>.table</code> table in a <code>.table-responsive</code>element.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-45.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Developers are able to change the style of each individual row <code>&lt;tr&gt;</code> and/or cell <code>&lt;td&gt;</code> by using <strong>contextual classes</strong>.</p>
<ul>
<li><code>.active</code> -    Applies the hover color to a particular row or cell</li>
<li><code>.success</code> -    Indicates a successful or positive action</li>
<li><code>.info</code> -    Indicates a neutral informative change or action</li>
<li><code>.warning</code> -    Indicates a warning that might need attention</li>
<li><code>.danger</code> -    Indicates a dangerous or potentially negative action</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/image-46.png" alt="Image" width="600" height="400" loading="lazy"></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The Best Bootstrap Tutorials for Responsive Web Design ]]>
                </title>
                <description>
                    <![CDATA[ Bootstrap is a popular front-end framework for web development. It contains pre-built components and design elements to style HTML content. Modern browsers such as Chrome, Firefox, Opera, Safari, and Internet Explorer support Bootstrap. Bootstrap inc... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/best-bootstrap-tutorial-responsive-web-design/</link>
                <guid isPermaLink="false">66c3457e4f7405e6476b017e</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ responsive design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 22 Nov 2019 17:33:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9f1e740569d1a4ca40e6.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Bootstrap is a popular front-end framework for web development. It contains pre-built components and design elements to style HTML content. Modern browsers such as Chrome, Firefox, Opera, Safari, and Internet Explorer support Bootstrap.</p>
<p>Bootstrap includes a responsive grid system for varying layouts. It is a great starting point for building a mobile friendly website. It also includes optional JavaScript functionality like collapsible content, carousels, and modals.</p>
<h4 id="heading-version-history"><strong>Version History</strong></h4>
<p>Twitter originally developed the Bootstrap framework as an internal tool. They released it as an open source project in August of 2011.</p>
<p>Bootstrap 2 was released in January 2012. One of the primary features was the introduction of the 12 column responsive grid system. Bootstrap 3 appeared in August of 2013, switching to a flat design and a mobile-first approach. Bootstrap 4 is available in beta as of August 2017, and now includes Sass and Flexbox.</p>
<p>Bootstrap 4 was in development for two years before releasing some beta versions during 2017, while the first stable release was out in January 2018. Some notable changes include:</p>
<ul>
<li>Moved from Less to Sass;</li>
<li>Moved to Flexbox and improved grid system;</li>
<li>Added cards (replacing wells, thumbnails, and panels);</li>
<li>And much more!</li>
</ul>
<p>At the time of writing, Bootstrap’s latest release is <a target="_blank" href="http://blog.getbootstrap.com/2018/07/24/bootstrap-4-1-3/">4.1.3</a>. If you would like to keep up with any news of announcements, follow them <a target="_blank" href="http://blog.getbootstrap.com/">here</a>.</p>
<h4 id="heading-installation"><strong>Installation</strong></h4>
<p>There are two main options to add Bootstrap to your web project. You can link to publicly available sources, or download the framework directly.</p>
<h5 id="heading-linking-to-another-source"><strong>Linking To Another Source</strong></h5>
<p>You can add Bootstrap CSS by using a <code>&lt;link&gt;</code> element inside the <code>&lt;head&gt;</code> of your webpage that references a Content Delivery Network (CDN):</p>
<p><code>&lt;link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"&gt;</code></p>
<p>Adding the JavaScript elements of Bootstrap is similar with <code>&lt;script&gt;</code> elements usually placed at the bottom of your ‘’ tag. You may need to include some dependencies first. Pay special attention to the order listed:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://code.jquery.com/jquery-3.3.1.slim.min.js"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></pre>
<p><em>Note: These are only examples and may change without notice. Please refer to a CDN for current links to include in your project.</em></p>
<h5 id="heading-downloadinstall"><strong>Download/Install</strong></h5>
<p>You can download and install the Bootstrap source files with Bower, Composer, Meteor, or npm. This allows greater control and the option to include or exclude modules as needed.</p>
<p><code>npm install bootstrap</code></p>
<p><code>gem 'bootstrap', '~&gt; 4.1.3'</code></p>
<p>_Note: These are only examples and may change without notice. Please refer to the <a href="’[https://getbootstrap.com/](https://getbootstrap.com/)’" target="’_blank’">Bootstrap website for the most up-to-date links.</a></p>
<h4 id="heading-the-bootstrap-grid-system"><strong>The Bootstrap Grid System</strong></h4>
<p>The grid system is a mobile-first flexbox system for quickly building layouts of all shapes and sizes suitable on all devices. It’s based on a 12 column layout and has multiple tiers, one for each media query range.</p>
<p>Bootstrap comes with predefined grid classes for your use in markup. See more details and examples at <a target="_blank" href="https://getbootstrap.com/docs/4.1/layout/grid/">https://getbootstrap.com/docs/4.1/layout/grid/</a></p>
<h3 id="heading-boostrap-features"><strong>Boostrap Features</strong></h3>
<ul>
<li>Bootstrap 3 supports the latest versions of the Google Chrome, Firefox, Internet Explorer, Opera, and Safari (except on Windows). It additionally supports back to IE8 and the latest Firefox Extended Support Release (ESR).[12]</li>
<li>Since 2.0, Bootstrap supports responsive web design. This means the layout of web pages adjusts dynamically, taking into account the characteristics of the device used (desktop, tablet, mobile phone).</li>
<li>Starting with version 3.0, Bootstrap adopted a mobile-first design philosophy, emphasizing responsive design by default.</li>
<li>Version 4.0 added Sass and Flexbox support</li>
</ul>
<h4 id="heading-more-information"><strong>More Information:</strong></h4>
<p>Bootstrap has thorough documentation with many <a target="_blank" href="https://getbootstrap.com/docs/4.0/examples/">examples</a> and an <a target="_blank" href="https://getbootstrap.com/docs/4.0/getting-started/introduction/">HTML template for getting started</a> (this template only has script included; it does not contain a set up of the grid system if that’s what you’re looking for).</p>
<p>In addition, you can find both <a target="_blank" href="https://bootswatch.com/">free</a> and <a target="_blank" href="https://themes.getbootstrap.com/">paid</a> themes that build on the Bootstrap framework to provide a more customized and stylish look.</p>
<h4 id="heading-bootstrap-resources"><strong>Bootstrap Resources:</strong></h4>
<p><a target="_blank" href="http://blog.getbootstrap.com/">Bootstrap’s official blog</a> </p>
<p><a target="_blank" href="http://expo.getbootstrap.com/">Bootstrap site inspiration</a> </p>
<p><a target="_blank" href="http://builtwithbootstrap.com/">Showcase of sites built using Bootstrap</a> </p>
<p><a target="_blank" href="https://github.com/twbs/bootlint">HTML linter for projects using Bootstrap</a> </p>
<p><a target="_blank" href="https://bootsnipp.com/">Design elements and code snippets for Bootstrap</a> </p>
<p><a target="_blank" href="http://expo.getbootstrap.com/resources/">Code, theme, and add-on resources for Bootstrap</a></p>
<h1 id="heading-getting-started-with-bootstrap-tutorial">Getting started with Bootstrap tutorial</h1>
<p>Using Bootstrap makes it easy to design a fully responsive website and is a framework worth learning.</p>
<h4 id="heading-what-is-a-responsive-website"><strong>What is a responsive website?</strong></h4>
<p>A responsive website is a website that resizes and rearranges that items on the page depending on the size of your browser. With a responsive website, if you resize your browser, you can see the changes occur in real time. Bootstrap makes your website responsive for you.</p>
<h4 id="heading-how-to-add-bootstrap-to-your-page"><strong>How to add Bootstrap to your page</strong></h4>
<p>Adding bootstrap to your page is a fast process, just add the following to the <code>&lt;head&gt;</code> tags in your code.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"</span> <span class="hljs-attr">integrity</span>=<span class="hljs-string">"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"</span> <span class="hljs-attr">crossorigin</span>=<span class="hljs-string">"anonymous"</span>&gt;</span>
</code></pre>
<p>You will also need to add the following between the <code>body</code> tags in your code. With bootstrap you’ll be using <code>&lt;div&gt;</code> tags. When using many of Bootstrap’s features, each tag will have its own unique set of classes applied that allows the tag to perform its task. Other sections of this Bootstrap guide will show more examples of how Bootstrap uses <code>&lt;div&gt;</code> tags. (<code>&lt;div&gt;</code> tags are not exclusive to Bootstrap, however Bootstrap makes use of them.). </p>
<p>Below is the code that would add to the <code>body</code> tags in your code to finish getting started. Keep in mind that while this creates the container, the page will still remain blank until you add content to the container.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"alert alert-success"</span> <span class="hljs-attr">role</span>=<span class="hljs-string">"alert"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">strong</span>&gt;</span>Congratulations!<span class="hljs-tag">&lt;/<span class="hljs-name">strong</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Bootstrap is now working on this page<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<h1 id="heading-templates">Templates</h1>
<p>Templates are prebuilt toolkits that make spinning up a new web page a breeze. If you have a general idea of your desired layout, or if you want to browse through a library of common layout templates for ideas, Bootstrap templates take much of the tediousness and frustrations away form the initial build process. This assistance helps you to focus on the finer details of the project instead of wondering why CSS is not cooperating.</p>
<h3 id="heading-getting-started"><strong>Getting Started</strong></h3>
<ul>
<li>Bootstrap's official webpage offers “Themes” instead of templates. Themes are just fully built out starter projects, while a template describes just a prebuilt HTML frame. Themes cost money and perhaps help out the novice developer, while many templates are open source and only provide the preliminary layout elements needed.</li>
<li>Below is a list of layout templates, made specifically for for Bootstrap. Have Fun!</li>
</ul>
<h3 id="heading-template-links"><strong>Template Links</strong></h3>
<ul>
<li><a target="_blank" href="https://startbootstrap.com/">StartBootstrap Templates</a></li>
<li><a target="_blank" href="https://www.w3schools.com/bootstrap/bootstrap_templates.asp">W3 Schools Bootstrap Templates</a></li>
<li><a target="_blank" href="https://wrapbootstrap.com/">Wrap Bootstrap</a></li>
<li><a target="_blank" href="http://wowslider.com/posts/35-top-free-bootstrap-templates-2016-95.html">Wow Slider</a></li>
<li><a target="_blank" href="https://bootstrapmade.com/">Bootstrap Made</a></li>
</ul>
<h2 id="heading-navigation-bar"><strong>Navigation Bar</strong></h2>
<p>The Bootstrap framework provides you with a feature call navigation bars. In short a navigation bar (also referred to as navbars) is a header at the top of the page to display navigational information.</p>
<h4 id="heading-how-to-use"><strong>How To Use</strong></h4>
<p>To use Bootstrap Navigation Bars, you add a <code>&lt;nav&gt;</code> element to the top inside the <code>&lt;body&gt;</code> element of your webpage. There are various styles you can add to customize the display of your navbars.</p>
<h4 id="heading-code-example"><strong>Code Example</strong></h4>
<p>This is the code needed to make a basic navbar.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h4 id="heading-navbar-styles"><strong>Navbar Styles</strong></h4>
<p>Bootstrap provides a set of classes in the Bootstrap framework to style your navbars. These classes are as follows:</p>
<ul>
<li><code>navbar navbar-default</code> This is the default style for your navbars.</li>
<li><code>navbar navbar-inverse</code> This is similar to the default style except the colors are inverted.</li>
</ul>
<h4 id="heading-adding-drop-down-menus-to-the-navbar"><strong>Adding drop-down menus to the navbar</strong></h4>
<p>You can include a drop down menu inside a navbar. This feature requires you to include Bootstrap’s javascript file for it to work.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-toggle"</span> <span class="hljs-attr">data-toggle</span>=<span class="hljs-string">"dropdown"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Drop down
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"caret"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"dropdown-menu"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Item 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Item 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Item 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
</code></pre>
<h4 id="heading-adding-buttons-to-the-navbar"><strong>Adding buttons to the navbar</strong></h4>
<p>You can add buttons on the navbar. The existing Bootstrap Button classes work, however you’ll need to include the class <code>navbar-btn</code> to the end of the class list.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn navbar-btn"</span>&gt;</span>Button<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
</code></pre>
<h4 id="heading-adding-forms-to-the-navbar"><strong>Adding forms to the navbar</strong></h4>
<p>You can also add forms to the navbar. This could be used for tasks such as a search field, quick login field, etc.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-form navbar-right"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-group"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"form-control"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Search"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-default"</span>&gt;</span>Search<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>  
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<h4 id="heading-aligning-elements-to-the-right-on-the-navbar"><strong>Aligning elements to the right on the navbar</strong></h4>
<p>In some cases you might want to align elements in a navbar to the right (for example a login or sign-up button.). To do this you’ll need to use the <code>navbar-right</code> class.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav navbar-right"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Action Link #1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Action Link #2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h4 id="heading-displaying-the-navbar-independent-of-scrolling"><strong>Displaying the navbar independent of scrolling</strong></h4>
<p>In some cases you might want to keep the navbar at the top or bottom of the screen regardless of scrolling. You will need to add either the <code>navbar-fixed-top</code> or <code>navbar-fixed-bottom</code> class to the <code>&lt;nav&gt;</code> element.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default navbar-fixed-top"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h4 id="heading-collapsing-the-navbar"><strong>Collapsing the navbar</strong></h4>
<p>On a small screen (such as a phone or tablet) the navbar is going to take up too much space. Luckily the option to collapse the navbar exists. You can accomplish this using the following example.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">nav</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar navbar-default"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-header"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"navbar-brand"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Site Name<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ul</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"nav navbar-nav"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"active"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Home<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 1<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 2<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">li</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>Page 3<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">li</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ul</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">nav</span>&gt;</span>
</code></pre>
<h4 id="heading-navbar-examples"><strong>Navbar Examples</strong></h4>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/Navigation_Bar___freeCodeCamp_Guide-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Learn the Bootstrap CSS framework by creating a custom admin theme ]]>
                </title>
                <description>
                    <![CDATA[ Bootstrap is a popular CSS framework that helps web developers create responsive, mobile-first websites. Learn to use Bootstrap in this full video course from Andrew Wilson. In this intermediate course, you will learn Bootstrap by creating a custom a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/learn-the-bootstrap-css-framework-by-creating-a-custom-admin-theme/</link>
                <guid isPermaLink="false">66b2053427569435a9255ade</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ youtube ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Beau Carnes ]]>
                </dc:creator>
                <pubDate>Thu, 17 Oct 2019 18:38:37 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/10/bootstrap.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Bootstrap is a popular CSS framework that helps web developers create responsive, mobile-first websites. Learn to use Bootstrap in this full video course from Andrew Wilson.</p>
<p>In this intermediate course, you will learn Bootstrap by creating a custom admin theme from scratch using webpack.</p>
<p>First, Andrew demonstrates how to set up npm and webpack so he can configure Bootstrap's source files that are written in SASS. Next, he teaches the basics of Bootstrap and creates some basic templates that are common in admin forms. Finally, he customizes the theme by writing custom styling and overwriting some of the Bootstrap JavaScript.</p>
<p>Watch the full video below or on the <a target="_blank" href="https://www.youtube.com/watch?v=RyTRgQ7k6QE">freeCodeCamp.org YouTube channel</a> (3 hour watch).</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/RyTRgQ7k6QE" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to create a login feature with Bootstrap Modal and jQuery AJAX ]]>
                </title>
                <description>
                    <![CDATA[ By Yogi Bootstrap Modal is an excellent way to create a Login form on your website. In this tutorial, you will learn how to create a login feature using Bootstrap for an ASP.NET website. The login Check feature will be created using jQuery AJAX. I wi... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-create-a-login-feature-with-bootstrap-modal-and-jquery-ajax-53dc0d281609/</link>
                <guid isPermaLink="false">66c350f5d4303af013602a2e</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ coding ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jQuery ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 03 Dec 2018 21:44:14 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*QQsDn3sXpsL06kzzS7a_oA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Yogi</p>
<p><strong>Bootstrap Modal</strong> is an excellent way to create a <strong>Login form</strong> on your website. In this tutorial, you will learn how to create a login feature using Bootstrap for an ASP.NET website. The login Check feature will be created using jQuery AJAX.</p>
<p><strong>I will create the following features Step by Step:</strong></p>
<ol>
<li><p>A Bootstrap Modal that will contain a login form.</p>
</li>
<li><p>The Login Form will contain 2 fields, ‘Username’ &amp; ‘Password’. The user has to enter their values in these fields.</p>
</li>
<li><p>On clicking the submit button on the form, the user’s input (username and password) will be sent to the C# function.</p>
</li>
<li><p>This C# function will check whether the username and password are correct or not.</p>
</li>
<li><p>If they are correct then the user is redirected to the profile page.</p>
</li>
</ol>
<h4 id="heading-you-can-check-out-the-working-demo-herehttpwwwdemoyogihostingcomebootstrap-modal-login-form"><a target="_blank" href="http://www.demo.yogihosting.com/e/bootstrap-modal-login-form/">You can check out the working DEMO here</a>.</h4>
<h4 id="heading-creating-a-bootstrap-modal-with-a-login-form"><strong>Creating a Bootstrap Modal with a Login Form</strong></h4>
<p>Add the reference of “bootstrap CSS, jQuery and bootstrap js” files on the page head.</p>
<pre><code>&lt;link rel=<span class="hljs-string">"stylesheet"</span> href=<span class="hljs-string">"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"</span>&gt;
</code></pre><pre><code>&lt;script src=<span class="hljs-string">"https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"</span>&gt;&lt;/script&gt;
</code></pre><pre><code>&lt;script src=<span class="hljs-string">"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"</span>&gt;&lt;/script&gt;
</code></pre><p>Next Create a Bootstrap Modal that contains the login form:</p>
<pre><code>&lt;div <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"container"</span>&gt;<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"validCredential"</span>&gt;</span></span>
</code></pre><pre><code>&lt;h3&gt;Try any one <span class="hljs-keyword">of</span> the following three:&lt;<span class="hljs-regexp">/h3&gt;&lt;div&gt;&lt;p&gt;  1. Username: Ram&lt;/</span>p&gt;<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>  Password: admin<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span>&lt;/div&gt;
</code></pre><pre><code>&lt;div&gt;<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>  2. Username: Shiv<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span><span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>  Password: admin<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span>&lt;/div&gt;
</code></pre><pre><code>&lt;div&gt;<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>  3. Username: Krishna<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span></span>
</code></pre><pre><code>&lt;p&gt;  Password: admin&lt;<span class="hljs-regexp">/p&gt;&lt;/</span>div&gt;
</code></pre><pre><code>&lt;/div&gt;
</code></pre><pre><code>&lt;!-- The button that triggers the Modal --&gt;<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-info btn-lg"</span> <span class="hljs-attr">data-toggle</span>=<span class="hljs-string">"modal"</span> <span class="hljs-attr">data-target</span>=<span class="hljs-string">"#myModal"</span>&gt;</span>Open Modal<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span></span>
</code></pre><pre><code>&lt;!-- Bootstrap Modal --&gt;&lt;div id="myModal" class="modal fade" role="dialog"&gt;  &lt;div class="modal-dialog"&gt;
</code></pre><pre><code>    &lt;!-- Modal content--&gt;    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"modal-content"</span>&gt;</span>      <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"modal-header"</span>&gt;</span>        <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"close"</span> <span class="hljs-attr">data-dismiss</span>=<span class="hljs-string">"modal"</span>&gt;</span>×<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>        <span class="hljs-tag">&lt;<span class="hljs-name">h4</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"modal-title"</span>&gt;</span>Log in with your Username<span class="hljs-tag">&lt;/<span class="hljs-name">h4</span>&gt;</span>      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
</code></pre><pre><code>      &lt;div <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"modal-body"</span>&gt;        <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">table</span>&gt;</span>          <span class="hljs-tag">&lt;<span class="hljs-name">tbody</span>&gt;</span>            <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>              <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>                <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"userNameTextBox"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Username"</span> /&gt;</span>              <span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>            <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>            <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>              <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>                <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"userNamSpan"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>              <span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>            <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>            <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>              <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>                <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"passwordTextBox"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"Password"</span> /&gt;</span>              <span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>            <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>            <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>              <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>                <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"passwordSpan"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>              <span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>            <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>            <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>              <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>                <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"submitButton"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Login"</span> /&gt;</span>              <span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>            <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>            <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>              <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>                <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"messageSpan"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>              <span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>            <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>            <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>              <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>                <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"loadingImg"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"loading.gif"</span> /&gt;</span>              <span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>            <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>          <span class="hljs-tag">&lt;/<span class="hljs-name">tbody</span>&gt;</span>        <span class="hljs-tag">&lt;/<span class="hljs-name">table</span>&gt;</span></span>      &lt;/div&gt;
</code></pre><pre><code>    &lt;div <span class="hljs-class"><span class="hljs-keyword">class</span></span>=<span class="hljs-string">"modal-footer"</span>&gt;      <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn-default"</span> <span class="hljs-attr">data-dismiss</span>=<span class="hljs-string">"modal"</span>&gt;</span>Close<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span></span>    &lt;<span class="hljs-regexp">/div&gt;  &lt;/</span>div&gt;&lt;!-- END Modal content--&gt;&lt;/div&gt;
</code></pre><pre><code>&lt;/div&gt;
</code></pre><pre><code>&lt;!-- END Bootstrap Modal --&gt;&lt;/div&gt;
</code></pre><p>This is how the bootstrap modal login form will look.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/DNem9yh40WOT2fNUPM33t9YynO7yWzqoiFsC" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Bootstrap Modal Login Form</strong></em></p>
<h4 id="heading-adding-the-jquery-code-on-the-button-click-event"><strong>Adding the jQuery Code on the button click event</strong></h4>
<p>In the button click, I will force users to enter some value to the username and password fields, before they submit the form.</p>
<p>When both the textboxes contain some value, only then I will be calling the C# function using the <a target="_blank" href="http://www.yogihosting.com/jquery-ajax/">jQuery AJAX method</a>. With this method, I will be able to pass the values of the 2 text boxes (username and password) to my C# function.</p>
<p>Add the below jQuery code to your page:</p>
<pre><code>$(<span class="hljs-string">"#submitButton"</span>).click(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">e</span>) </span>{
</code></pre><pre><code><span class="hljs-keyword">if</span> ($(<span class="hljs-string">"#userNameTextBox"</span>).val() == <span class="hljs-string">""</span>)
</code></pre><pre><code>$(<span class="hljs-string">"#userNamSpan"</span>).text(<span class="hljs-string">"Enter Username"</span>);
</code></pre><pre><code><span class="hljs-keyword">else</span>
</code></pre><pre><code>$(<span class="hljs-string">"#userNamSpan"</span>).text(<span class="hljs-string">""</span>);
</code></pre><pre><code><span class="hljs-keyword">if</span> ($(<span class="hljs-string">"#passwordTextBox"</span>).val() == <span class="hljs-string">""</span>)
</code></pre><pre><code>$(<span class="hljs-string">"#passwordSpan"</span>).text(<span class="hljs-string">"Enter Password"</span>);
</code></pre><pre><code><span class="hljs-keyword">else</span>
</code></pre><pre><code>$(<span class="hljs-string">"#passwordSpan"</span>).text(<span class="hljs-string">""</span>);
</code></pre><pre><code><span class="hljs-keyword">if</span> (($(<span class="hljs-string">"#userNameTextBox"</span>).val() != <span class="hljs-string">""</span>) &amp;&amp; ($(<span class="hljs-string">"#passwordTextBox"</span>).val() != <span class="hljs-string">""</span>))
</code></pre><pre><code>$.ajax({  <span class="hljs-attr">type</span>: <span class="hljs-string">"POST"</span>,  <span class="hljs-attr">url</span>: <span class="hljs-string">"index.aspx/login"</span>,  <span class="hljs-attr">contentType</span>: <span class="hljs-string">"application/json; charset=utf-8"</span>,  <span class="hljs-attr">data</span>: <span class="hljs-string">'{"username":"'</span> + $(<span class="hljs-string">"#userNameTextBox"</span>).val() + <span class="hljs-string">'","password":"'</span> + $(<span class="hljs-string">"#passwordTextBox"</span>).val() + <span class="hljs-string">'"}'</span>,  <span class="hljs-attr">dataType</span>: <span class="hljs-string">"json"</span>,  <span class="hljs-attr">success</span>: <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">result, status, xhr</span>) </span>{    <span class="hljs-keyword">if</span> (result.d == <span class="hljs-string">"Success"</span>) {      $(<span class="hljs-string">"#messageSpan"</span>).text(<span class="hljs-string">"Login Successful, Redireting to your profile page."</span>);      <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{ <span class="hljs-built_in">window</span>.location = <span class="hljs-string">"profile.aspx"</span>; }, <span class="hljs-number">2000</span>);    }    <span class="hljs-keyword">else</span>      $(<span class="hljs-string">"#messageSpan"</span>).text(<span class="hljs-string">"Login failed, Please try again."</span>);    },   <span class="hljs-attr">error</span>: <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">xhr, status, error</span>) </span>{     $(<span class="hljs-string">"#dbData"</span>).html(<span class="hljs-string">"Result: "</span> + status + <span class="hljs-string">" "</span> + error + <span class="hljs-string">" "</span> + xhr.status + <span class="hljs-string">" "</span> + xhr.statusText)   }});
</code></pre><pre><code>});
</code></pre><pre><code>$(<span class="hljs-built_in">document</span>).ajaxStart(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{  $(<span class="hljs-string">"#loadingImg"</span>).show();});
</code></pre><pre><code>$(<span class="hljs-built_in">document</span>).ajaxStop(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{  $(<span class="hljs-string">"#loadingImg"</span>).hide();});
</code></pre><p>In the success callback method, you can see that I am redirecting the user to the <strong>profile.aspx</strong> page if-and-only-if I receive the “<strong>Success</strong>” message.</p>
<p>The <strong>setTimeout()</strong> is a JavaScript function that will redirect to the profile page in 2 seconds.</p>
<p><strong>The following 2 images will explain the login feature:</strong></p>
<blockquote>
<p><em>1. When login fails.</em></p>
</blockquote>
<p><img src="https://cdn-media-1.freecodecamp.org/images/pEzx51hKTGLE3OTi76TdDiLQQKCiHN4VS8EZ" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Login Failed for wrong Username and Password</strong></em></p>
<blockquote>
<p><em>2. When login is successful.</em></p>
</blockquote>
<p><img src="https://cdn-media-1.freecodecamp.org/images/bttqLY1d9BT7-UNRPN-lrYCIxgXHCqVmVV0H" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Login Successful when Username and Password are correct</strong></em></p>
<h4 id="heading-the-c-code"><strong>The C# code:</strong></h4>
<p>Now in your <strong>.aspx.cs</strong> page, add the following code:</p>
<pre><code>[System.Web.Services.WebMethod]
</code></pre><pre><code>public <span class="hljs-keyword">static</span> string login(string username, string password)
</code></pre><pre><code>{
</code></pre><pre><code><span class="hljs-keyword">var</span> cred = LoadCredential();
</code></pre><pre><code><span class="hljs-keyword">var</span> count = (<span class="hljs-keyword">from</span> t <span class="hljs-keyword">in</span> cred
</code></pre><pre><code>where t.username == username &amp;&amp; t.password == password
</code></pre><pre><code>select t).Count();
</code></pre><pre><code><span class="hljs-keyword">if</span> (count == <span class="hljs-number">1</span>)
</code></pre><pre><code>{
</code></pre><pre><code>HttpContext.Current.Session[<span class="hljs-string">"User"</span>] = username;
</code></pre><pre><code><span class="hljs-keyword">return</span> <span class="hljs-string">"Success"</span>;
</code></pre><pre><code>}
</code></pre><pre><code><span class="hljs-keyword">else</span>
</code></pre><pre><code><span class="hljs-keyword">return</span> <span class="hljs-string">"Failed"</span>;
</code></pre><pre><code>}
</code></pre><pre><code><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Credential</span></span>
</code></pre><pre><code>{
</code></pre><pre><code>public string username { get; set; }
</code></pre><pre><code>public string password { get; set; }
</code></pre><pre><code>}
</code></pre><pre><code><span class="hljs-keyword">static</span> List&lt;Credential&gt; LoadCredential()
</code></pre><pre><code>{
</code></pre><pre><code>List&lt;Credential&gt; credList = <span class="hljs-keyword">new</span> List&lt;Credential&gt;();
</code></pre><pre><code>Credential cred = <span class="hljs-keyword">new</span> Credential();
</code></pre><pre><code>cred.username = <span class="hljs-string">"Ram"</span>;
</code></pre><pre><code>cred.password = <span class="hljs-string">"admin"</span>;
</code></pre><pre><code>credList.Add(cred);
</code></pre><pre><code>cred = <span class="hljs-keyword">new</span> Credential();
</code></pre><pre><code>cred.username = <span class="hljs-string">"Shiv"</span>;
</code></pre><pre><code>cred.password = <span class="hljs-string">"admin"</span>;
</code></pre><pre><code>credList.Add(cred);
</code></pre><pre><code>cred = <span class="hljs-keyword">new</span> Credential();
</code></pre><pre><code>cred.username = <span class="hljs-string">"Krishna"</span>;
</code></pre><pre><code>cred.password = <span class="hljs-string">"admin"</span>;
</code></pre><pre><code>credList.Add(cred);
</code></pre><pre><code><span class="hljs-keyword">return</span> credList;
</code></pre><pre><code>}
</code></pre><p>The login() function is the one that is called by the <strong>jQuery</strong> method. It checks if the <em>username and passwords are correct</em> and then returns the appropriate message.</p>
<h4 id="heading-css"><strong>CSS</strong></h4>
<p>To style the login form and the bootstrap modal so that they look perfect, add the following CSS to your page:</p>
<pre><code>.btn {
</code></pre><pre><code>margin: <span class="hljs-number">15</span>px <span class="hljs-number">0</span>;
</code></pre><pre><code>}
</code></pre><pre><code>#loadingImg {
</code></pre><pre><code>display: none;
</code></pre><pre><code>position: absolute;
</code></pre><pre><code>margin: auto;
</code></pre><pre><code>top: <span class="hljs-number">0</span>;
</code></pre><pre><code>left: <span class="hljs-number">0</span>;
</code></pre><pre><code>right: <span class="hljs-number">0</span>;
</code></pre><pre><code>bottom: <span class="hljs-number">0</span>;
</code></pre><pre><code>}
</code></pre><pre><code>.validCredential h3 {
</code></pre><pre><code>float: left;
</code></pre><pre><code>text-decoration: underline;
</code></pre><pre><code>}
</code></pre><pre><code>.validCredential div {
</code></pre><pre><code>clear: both;
</code></pre><pre><code>}
</code></pre><pre><code>.validCredential p {
</code></pre><pre><code>float: left;
</code></pre><pre><code>padding-right: <span class="hljs-number">10</span>px;
</code></pre><pre><code>}
</code></pre><pre><code>::-webkit-input-placeholder {
</code></pre><pre><code>color: #ccc;
</code></pre><pre><code>}
</code></pre><pre><code>#myModal {
</code></pre><pre><code>color: #<span class="hljs-number">1</span>fa67b;
</code></pre><pre><code>}
</code></pre><pre><code>#myModal table {
</code></pre><pre><code>position: relative;
</code></pre><pre><code>margin: auto;
</code></pre><pre><code>}
</code></pre><pre><code>#myModal table input {
</code></pre><pre><code>border-radius: <span class="hljs-number">5</span>px;
</code></pre><pre><code>border: solid <span class="hljs-number">1</span>px #CCC;
</code></pre><pre><code>margin: <span class="hljs-number">10</span>px;
</code></pre><pre><code>padding: <span class="hljs-number">3</span>px <span class="hljs-number">10</span>px;
</code></pre><pre><code>color: #<span class="hljs-number">000</span>;
</code></pre><pre><code>}
</code></pre><pre><code>#myModal table input[type=<span class="hljs-string">"button"</span>] {
</code></pre><pre><code>width: <span class="hljs-number">94</span>%;
</code></pre><pre><code>background: #<span class="hljs-number">1</span>fa67b;
</code></pre><pre><code>color: #FFF;
</code></pre><pre><code>}
</code></pre><pre><code>#myModal table span {
</code></pre><pre><code>float: left;
</code></pre><pre><code>font-size: <span class="hljs-number">12</span>px;
</code></pre><pre><code>color: #f00;
</code></pre><pre><code>padding-left: <span class="hljs-number">23</span>px;
</code></pre><pre><code>}
</code></pre><h4 id="heading-profile-page"><strong>Profile Page</strong></h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/DnAL6MlCl08x4PU4NDj9YKcfGhsYAoJnnsra" alt="Image" width="600" height="400" loading="lazy">
<em><strong>Welcome Message on the Profile Page</strong></em></p>
<p>On the profile page, the user will get the welcome message. The code of the profile page is the following:</p>
<pre><code>&lt;h1 id=<span class="hljs-string">"welcomeMessage"</span> runat=<span class="hljs-string">"server"</span>&gt;&lt;/h1&gt;
</code></pre><pre><code><span class="hljs-keyword">if</span> (!IsPostBack){  welcomeMessage.InnerHtml = <span class="hljs-string">"Welcome "</span> + Session[<span class="hljs-string">"User"</span>] + <span class="hljs-string">" to the profile page."</span>;}
</code></pre><blockquote>
<p><strong><em>Check out the working demo by clicking the below link:</em></strong></p>
</blockquote>
<h4 id="heading-working-demohttpwwwdemoyogihostingcomebootstrap-modal-login-form"><a target="_blank" href="http://www.demo.yogihosting.com/e/bootstrap-modal-login-form/">Working DEMO</a></h4>
<h3 id="heading-conclusion"><strong>Conclusion</strong></h3>
<p>I hope you liked this tutorial. Feel free to contact me for any questions. I will be there to help if you need it. If you liked this tutorial, then kindly share it on your social accounts.</p>
<p><strong>I have also published another tutorial on freeCodeCamp, you would like to see it too — <a target="_blank" href="https://medium.freecodecamp.org/master-the-art-of-looping-in-javascript-with-these-incredible-tricks-a5da1aa1d6c5">Master the art of looping in JavaScript with these incredible tricks</a></strong></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Learn the Bootstrap 4 Grid System in 10 Minutes ]]>
                </title>
                <description>
                    <![CDATA[ By Elena-Cristina Conacel The Bootstrap 4 Grid System is used for responsive layouts. A responsive layout represents the way elements align in the page on different resolutions. It is important you understand how to use the grid before learning about... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/learn-the-bootstrap-4-grid-system-in-10-minutes-e83bfae115da/</link>
                <guid isPermaLink="false">66c359d5f83dfae169b2c010</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Front-end Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 26 Nov 2018 21:17:11 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*9nkJt3S1Fe_KMkDtpIhgXw.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Elena-Cristina Conacel</p>
<p>The Bootstrap 4 Grid System is used for responsive layouts.</p>
<p>A responsive layout represents the way elements align in the page on different resolutions. It is important you understand how to use the grid before learning about any other Bootstrap 4 component, because whatever element you use, you will need to place it somewhere on the screen.</p>
<p>Let’s get started!</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/bIvdmOpWL2YSwkrfoTrOUWMPwyhyjhgyDDND" alt="Image" width="600" height="400" loading="lazy">
_Photo credit to [shot](https://dribbble.com/animade" rel="noopener" target="_blank" title=""&gt;Animade for his &lt;a href="https://dribbble.com/shots/4948320-Computer-Mouse" rel="noopener" target="<em>blank" title=").</em></p>
<h3 id="heading-table-of-contents">Table of Contents</h3>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/learn-the-bootstrap-4-grid-system-in-10-minutes-e83bfae115da/#bootstrap-4-containers">Bootstrap 4 Containers</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/learn-the-bootstrap-4-grid-system-in-10-minutes-e83bfae115da/#bootstrap-4-rows">Bootstrap 4 Rows</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/learn-the-bootstrap-4-grid-system-in-10-minutes-e83bfae115da/#bootstrap-4-columns">Bootstrap 4 Columns</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/learn-the-bootstrap-4-grid-system-in-10-minutes-e83bfae115da/#further-reading">Further Reading</a></li>
</ul>
<p>The Bootstrap 4 grid consists of containers, rows and columns. We will take them one by one and explain them.</p>
<h3 id="heading-bootstrap-4-containers">Bootstrap 4 Containers</h3>
<p>A Bootstrap 4 container is an element with the class <code>.container</code>. The container is the root of the Bootstrap 4 grid system and it is used to control the width of the layout.</p>
<p>The Bootstrap 4 container contains all the elements in a page. This means your page should have the following structure: first the body of the HTML page, inside of it you should add the container and all the other elements inside the container.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
   <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
    ...
   <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
</code></pre>
<p>The simple <code>.container</code> class sets the width of the layout depending on the width of the screen. It places the content in the middle of the page aligning it horizontally. There is equal space between the Bootstrap 4 container and the left and the right edge of the page.</p>
<p>The <code>.container</code> scales down in width as the screen width narrows and becomes full-width on mobile. The width of the container is defined inside the Bootstrap 4 library for every screen size. You can see the exact <a target="_blank" href="https://getbootstrap.com/docs/4.1/layout/grid/#grid-options">sizes here</a>.</p>
<p>A full-width container takes 100% of the screen size regardless of the screen width. To use it you need to add the class .<code>container-fluid</code>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1rf1sYoCfHD8IlHcFIed9qH5pttf4Bf1KSsw" alt="Image" width="600" height="400" loading="lazy"></p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
  Hello! I am in a simple container.
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container-fluid"</span>&gt;</span>
  Hello! I am in a full-width container.
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>You can view the CodePen <a target="_blank" href="https://codepen.io/cristinaconacel/pen/XBLVre">here</a>.</p>
<p>To see the differences between the two types of containers, you can open the pen in your console and switch between screen sizes.</p>
<h3 id="heading-bootstrap-4-rows">Bootstrap 4 Rows</h3>
<p>Bootstrap 4 rows are horizontal slices of the screen. They are used only as wrappers for columns. To use them, you need the <code>.row</code> class.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  ...
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>Here are the most important things you need to remember about Bootstrap 4 rows:</p>
<ul>
<li><strong>They are only used for containing columns.</strong> If you place other elements inside the row along with columns you will not get the expected result.</li>
<li><strong>They have to be placed in containers.</strong> If you don’t do this, you will get a horizontal scroll on your page. This happens because rows have negative left and right margins of 15. The container has 15px paddings so it counteracts the margins.</li>
<li><strong>The columns have to be children of the row.</strong> Otherwise they will not align. The rows and columns are created to work together in this strict hierarchy.</li>
</ul>
<h3 id="heading-bootstrap-4-columns">Bootstrap 4 Columns</h3>
<p>We can now get to the nice part of this tutorial, the Bootstrap 4 columns. Columns are great! They help you divide the screen horizontally.</p>
<p>If you place a single column in your row, it will take up all the width. If you add two columns, they will each take 1/2 from the width. And so it goes for any number of columns.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/aaNpgARcShivW4WorInpghjdLbX7Jiohd2DA" alt="Image" width="600" height="400" loading="lazy"></p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"container"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
       ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
       ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
      ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
       ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col"</span>&gt;</span>
       ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p><em>You can see the code live on <a target="_blank" href="https://codepen.io/cristinaconacel/pen/NOLEyy">CodePen</a>.</em></p>
<p><strong>Side note:</strong> Columns are not coloured. I just added colours for a more visually compelling description/so they look pretty.</p>
<h3 id="heading-setting-sizes-for-columns"><strong>Setting Sizes for Columns</strong></h3>
<p>Using the <code>.col</code> class sets the width for the column dynamically. That means that depending on the number of columns in a row, the width of a column will be the width of the container divided by the number of columns.</p>
<p>But there is another way to define columns. You can use classes for columns and define their size.</p>
<p>By default, the Bootstrap 4 grid consists of 12 columns. You can select any size from 1 to 12 for your column. If you want 3 equal columns, you can use <code>.col-4</code> for each one (because 3*4 cols each = 12). Or you can set different sizes for them. Here are some examples:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/3ib3OrRrGbxeQNZengIzNKNf4Pkm3nYuVGW8" alt="Image" width="600" height="400" loading="lazy"></p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-6"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-6"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-5"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-7"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-3"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-4"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-6"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-7"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>You can see the code live on <a target="_blank" href="https://codepen.io/cristinaconacel/pen/xyaQNw">CodePen</a>.</p>
<p>If the sum of the cols in your row doesn’t get to 12, then they don’t fill the whole row. If the sum of the columns goes beyond 12 then it will move to the next line. The first line will only display the first elements that add up to 12 or lower.</p>
<h3 id="heading-setting-breakpoints-for-columns">Setting Breakpoints for Columns</h3>
<p>If you take the example above and want to display it on mobile, you may run into some problems. Displaying five columns on mobile will make the content unreadable.</p>
<p>This is where one of the most powerful Bootstrap 4 components comes into play. In order to have different layouts on different screens you won’t need to write media queries, instead you can use the column breakpoints.</p>
<p>A breakpoint is a Bootstrap 4 variable that stands for a screen resolution. When you are specifying a breakpoint for a class, you are telling the class to be active only for resolutions that are at least as big as the number that the breakpoint holds.</p>
<p>The simplest class that we will learn about is the <code>.col-[breakpoint]</code> class. When you use this class, you are defining the behaviour for the columns only when they are displayed on devices that have a resolution of at least the defined breakpoint. Up to the given breakpoint, your columns will align vertically by default. And after your breakpoint, they will align horizontally because of the class.</p>
<p>Bootstrap has 4 breakpoints that you can use:</p>
<ul>
<li><code>.col-sm</code> for larger mobile phones (devices with resolutions ≥ 576px);</li>
<li><code>.col-md</code> for tablets (≥768px);</li>
<li><code>.col-lg</code> for laptops (≥992px);</li>
<li><code>.col-xl</code> for desktops (≥1200px)</li>
</ul>
<p>Let’s say you want to display two columns one after another vertically on small screens and on the same line on bigger screens. You will need to specify the breakpoint where the columns go on the same line.</p>
<p>In our example we will use the <code>.col-lg</code> breakpoint and see how the columns look on different screens. For resolutions that are lower than the given breakpoint (&lt;992px) the columns will be displayed vertically. This means that on mobile devices and tablets, the columns will look like this:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/JZZ4xgPEjOQ09MBX8NoX65F9XLn4esZ2HnCi" alt="Image" width="600" height="400" loading="lazy">
<em>The display for resolutions &lt; 992px (mobile devices).</em></p>
<p>And for devices that have a resolution that is higher or equal to the breakpoint (≥992px) the columns will go on the same row. This means that on laptops and desktops you will get this result:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/YCvBIbCtFgLI9Ret9gwVbnkNxuu1wk8EjR-l" alt="Image" width="600" height="400" loading="lazy">
<em>The display for resolutions &gt;= 992px (laptops and bigger screens).</em></p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-lg"</span>&gt;</span>
   ...
 <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-lg"</span>&gt;</span>
    ...   
 <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>You can see the code live on <a target="_blank" href="https://codepen.io/cristinaconacel/pen/OBoqqz">CodePen</a>. If you open the Codepen in another window and see the page at different resolutions, you will see the columns change their positioning.</p>
<p>If you wanted for the 2 columns to go on the same line starting with larger mobile phones you would use <code>.col-sm</code>, for tablets <code>.col-md</code> and for extra large screens <code>.col-xl</code>.</p>
<h3 id="heading-setting-sizes-and-breakpoints-for-columns"><strong>Setting Sizes and Breakpoints for Columns</strong></h3>
<p>You can combine the sizes and breakpoints and use a single class with the format <code>.col-[breakpoint]-[size]</code>.</p>
<p>For example, if you want three columns of different sizes to align on a row starting with the laptop resolution you need to do this:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-lg-4"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-lg-3"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-lg-5"</span>&gt;</span>
    ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>You will get this result on resolutions &lt;992px:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/KH7dwBmHGHssTgFII9tlk0IlzJ2lTFjoDuY1" alt="Image" width="600" height="400" loading="lazy"></p>
<p>And for screens that are ≥992px:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xLOVbs29mzGIiSe9WKNfIUyKwL2fEc6n0pp8" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Again, you can see the code live on <a target="_blank" href="https://codepen.io/cristinaconacel/pen/ReYOwZ">CodePen</a>.</p>
<p>But what if you want to display one column per row on small mobile resolutions, two columns per row on tablets and four on laptops or devices with higher resolutions?</p>
<p>Then you add multiple classes for a single column to describe the behaviour for every resolution. Using multiple classes, you specify that the content will take six slots on tablets and three on laptops.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-6 col-lg-3"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-6 col-lg-3"</span>&gt;</span>
    ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-6 col-lg-3"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-sm-6 col-lg-3"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>The result will show like this on tablets:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/8Ub6sFDws2UJO8qyLNx3zXiWMylQWpIeLPyX" alt="Image" width="600" height="400" loading="lazy"></p>
<p>And like this on laptops and higher resolutions:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/hVaaOjxUkTRDXBpyKNRBIZt6mzerVq-UoFHO" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This example is also live on <a target="_blank" href="https://codepen.io/cristinaconacel/pen/mjZBPO">CodePen</a>.</p>
<p>As an exercise, you can try and create rows with different number of columns depending on the screensize and verify the behaviour in your browser console.</p>
<h3 id="heading-offsetting-columns"><strong>Offsetting Columns</strong></h3>
<p>If you don’t want your columns to be next to each other, you can use the class <code>.offset-[breakpoint]-[size]</code> together with the <code>.col-[breakpoint]-[size]</code>.</p>
<p>Using this class is the same as adding an empty column before your column. Here is a simple example:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/b7dxvLZ2St8xI37XTc0R8kFvdfae2Zjvqbmf" alt="Image" width="600" height="400" loading="lazy"></p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-4 offset-md-4"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-4"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>You can see the code live on <a target="_blank" href="https://codepen.io/cristinaconacel/pen/KGxYaL">CodePen</a>.</p>
<p>You can use the class on any column in the row. Here are some more examples:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/tem6Qp-WqVavEKizT-OIshNBMSDDrSVP3wIY" alt="Image" width="600" height="400" loading="lazy"></p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-4"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-4 offset-md-4"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-4 offset-md-2"</span>&gt;</span>
     ...    
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-4 offset-md-2"</span>&gt;</span>
     ...     
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>  
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-6 offset-md-3"</span>&gt;</span>
     ...
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>   
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<h3 id="heading-nesting-columns"><strong>Nesting Columns</strong></h3>
<p>This may come as a surprise, but you can add a row inside a column!</p>
<p>The row in question (which will have the width of its parent column) will then be divided into 12 (smaller) columns that you can reference through the <code>.col-*</code> classes.</p>
<p>Let’s take a look at what happens when we insert a new row inside a column:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/SiRLnZuYJJqLeAK2eN42Xhb9dZz9s87wDaN7" alt="Image" width="600" height="400" loading="lazy"></p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-8"</span>&gt;</span>
        ...
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"row"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-5"</span>&gt;</span>
               ...
            <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-7"</span>&gt;</span>
               ...   
            <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>     
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"col-md-4"</span>&gt;</span>
       ...
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>You can see the code live on <a target="_blank" href="https://codepen.io/cristinaconacel/pen/OBoGZr">CodePen</a>.</p>
<p>Knowing this, you can go many levels deep to organise your information. The columns will provide a simple way for you to manage your space.</p>
<p>This wraps up the basic knowledge regarding the Bootstrap 4 responsive grid system. If you have questions, please let me know in the comments, I will be glad to answer.</p>
<h3 id="heading-further-reading">Further Reading</h3>
<p>If you have more time, here are some useful resources:</p>
<ul>
<li><a target="_blank" href="https://getbootstrap.com/docs/4.1/layout/grid/">Official Grid Documentation</a> from GetBootstrap</li>
<li><a target="_blank" href="https://scrimba.com/p/pD5KUE/cdm3asD">Video Tutorial</a> from Scrimba</li>
</ul>
<p>This article was initially posted on the <a target="_blank" href="https://bootstrapbay.com/blog/day-2-bootstrap-4-grid-system-tutorial-examples/">BootstrapBay Blog</a>. It is part of a larger series of Bootstrap 4 tutorials called <a target="_blank" href="https://bootstrapbay.com/blog/14-days-bootstrap-4/">14 Days of Bootstrap 4</a>. If you want to continue learning about the Bootstrap 4 components, these articles are a good place to start.</p>
<p>And if you want to jump start your development with a Bootstrap template, you can check out our <a target="_blank" href="http://bootstrapbay.com">marketplace</a>.</p>
<p>But before delving deeper, take a moment to celebrate your newly acquired skills!?</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/gS3FeSJGquHlZEzANXWSsAakOD2FbabpNvD7" alt="Image" width="600" height="400" loading="lazy">
_Photo credit to [shot](https://dribbble.com/jonasmosesson" rel="noopener" target="_blank" title=""&gt;Jonas Mosesson for his &lt;a href="https://dribbble.com/shots/4198035-Sweet-Berry-Wine" rel="noopener" target="<em>blank" title=").</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ A Learning Path for Newbies in WordPress Development ]]>
                </title>
                <description>
                    <![CDATA[ By Ihtisham Zahoor In this information age, one obstacle in learning something new is not where to find the resources. It’s from where to start and make sense of all the resources available online these days. This holds especially true in web develop... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/learning-path-for-newbies-in-wordpress-development-a283981adf53/</link>
                <guid isPermaLink="false">66d45f32b6b7f664236cbdcc</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS3 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML5 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ jQuery ]]>
                    </category>
                
                    <category>
                        <![CDATA[ js ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ PHP ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Sass ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WordPress ]]>
                    </category>
                
                    <category>
                        <![CDATA[ wordpress plugins ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WordPress Theme ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 12 Sep 2018 18:46:58 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/0*RlFuY9MLjBJDt1U5" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Ihtisham Zahoor</p>
<p>In this information age, one obstacle in learning something new is not where to find the resources. It’s from where to start and make sense of all the resources available online these days. This holds especially true in web development when new tools are popping up overnight.</p>
<p>Back in 2015, since I first decided to learn web development, I have faced challenges of self-doubt and lack of motivation. But the one challenge which drained my energies was not knowing what path to follow.</p>
<p>Considering the initial challenges in this path I have written this piece for technology enthusiasts who want to get their hands dirty in web development. Especially WordPress development. All in the hope you are going to spend your time building something cool than getting into this never-ending vicious cycle of learning one tool to another.</p>
<h1 id="heading-caution-a-lot-of-learning-in-this-path"><strong>Caution! A lot of learning in this path</strong></h1>
<p>I am a WordPress developer (although my impostor syndrome tells me otherwise). I can share my experience only related to WordPress. But before diving into details, let’s examine a Q/A session first.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/NXiCcxwi7e3plLZMWr3KAfpSuCMA1KA5ODNe" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now, is the answer mean? Maybe. Is it true? Absolutely! WordPress and Web Development, in general, are as serious and demanding as any profession. So be ready for…</p>
<ul>
<li>Lifetime of Learning</li>
<li>Pulling all-nighters occasionally</li>
</ul>
<p>All right, have you read and understood the above points? Great. Now relax as it is not to discourage you or anything. It’s just how the life of a developer is as the ever-changing nature of this field requires.</p>
<p>The good news is there are not many web technologies you have to learn to master the craft of WordPress Development. That being said, give your time to this amazing piece of software, and WordPress will adore you in return.</p>
<p>WordPress will change your life if you let it — Chris Lema</p>
<p>It’s all inspiring and cute, right? It is one of the reasons <a target="_blank" href="https://topher1kenobe.com/">Topher DeRosia</a> (huge props) has provided the <a target="_blank" href="https://heropress.com/">HeroPress</a> platform for WordPressers (yes, this is what we proudly call ourselves). Here WordPressers share regularly their WordPress origin stories with the <a target="_blank" href="https://opensource.org/community">community</a>. Rest assured while reading through the stories you are going to feel adrenaline rush through your body as many of you are going to find yourself related to those stories.</p>
<h1 id="heading-wordpress-for-everyone">WordPress for Everyone!</h1>
<p>WordPress is super easy to use. In fact, anyone without any technical knowledge, can set up and start using WordPress in no time. However, WordPress has a vast ecosystem. I, for one, would categorize WordPress development being carried out in two different domains. I’ll first list those domains below and then I will discuss each one separately.</p>
<ul>
<li>WordPress Site Customization</li>
<li>WordPress Themes/Plugins Development</li>
</ul>
<h1 id="heading-wordpress-site-customization">WordPress Site Customization</h1>
<p>WordPress Site Customization is where all the buzz is about, as it amounts for most of the work done with respect to WordPress usage. Site Customization is that domain where no prior coding knowledge is required.</p>
<p>That is to say, a WordPress power user can easily perform tasks like Theme/Plugin setup and customization using page builders, site debugging, and site maintenance, etc. Moreover, Theme customization is all about customizing or modifying a pre-made theme as per the requirements of your client.</p>
<p>Considering that, and to give you a perspective about the process, you can watch the following short tutorial by Tyler Moore. In his tutorial, he builds a new website by customizing a pre-made theme using the Elementor page builder.</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/8AZ8GqW5iak" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<h1 id="heading-wordpress-themesplugins-development">WordPress Themes/Plugins Development</h1>
<p>It is where all the fun is for WordPress geeks. We can call it the <em>actual</em> WordPress development, as this domain is all about knowing and getting into the nitty-gritty technical details of programming. It can be as simple as using a few WordPress hooks to modify responses or as complex as building a full-fledge product on WordPress.</p>
<p>So, in case you want to start into this domain, you have to invest more time learning about web technologies involved in WordPress development. Considering that, the rest of this article will discuss all the technologies and a few tips and tricks to get you started in <em>actual</em> WordPress development.</p>
<h1 id="heading-learning-path"><strong>Learning Path</strong></h1>
<p>To get started in your WordPress Development journey, these tools and technologies are what you are going to be working with.</p>
<ol>
<li><p>Say hello and embrace g̵o̵o̵d̵ ̵o̵̵̵l̵̵̵’ HTML5 modules with Semantics and Accessibility concepts. HTML is what gives structure to the site contents.</p>
</li>
<li><p>This quote says it all:</p>
</li>
</ol>
<p>You are the CSS to my HTML — Some Genius</p>
<p>CSS is how HTML is presented in the web browser. Make sure to learn SASS preprocessor as your savior in writing modular CSS once you get a grasp of the basics.</p>
<ol start="3">
<li>The organization behind WordPress has big plans for making JavaScript part of the WordPress Front-end. This officially came from the original author of WordPress.</li>
</ol>
<p>Learn JavaScript, Deeply — Matt Mullenweg</p>
<p>Yes, I know that might be far-fetched for a newbie who is starting out to follow this advice, but keep an eye out for development in this area. Now, this doesn’t mean you have to master JavaScript to work with WordPress. Start with the basics including its hugely popular library jQuery.</p>
<ol start="4">
<li><p>Wouldn’t it be nice if you could get a 1000-step head-start with these three technologies to speed up your development process? Well, that is where front-end frameworks like <a target="_blank" href="http://getbootstrap.com/">Twitter Bootstrap</a> come into play. Explore it and get amazed. Don’t confuse front-end frameworks with JavaScript frameworks. Front-end is used interchangeably with JavaScript libraries and frameworks, which is a whole different path.</p>
</li>
<li><p>PHP is the scripting language that powers WordPress. If you want to dive deep in WordPress, learn PHP head-first with its OOP concepts including MySQL as its back-end database.</p>
</li>
<li><p>In general, when people talk about WordPress Development, it usually means only two segments of WordPress.</p>
</li>
<li><p>WordPress Theme Development, which is developing a presentation (layout) of sites (hence the name “Theme”).</p>
</li>
<li>WordPress Plugin Development, which is to add functionality to WordPress sites</li>
</ol>
<p>For a developer, it is of utmost importance to understand and be comfortable working with both these segments. And to add a tad bit more in your learning journey, get familiar with Internationalization and Localization. You also need to know WordPress Hooks and APIs to name a few.</p>
<p>While developing sites, most of your time is going to be spent in a local development environment and in a code editor. For the sake of complete information in this article, let me point you to an easy-to-setup yet powerful local development environment (<a target="_blank" href="https://local.getflywheel.com/">Local by Flywheel</a>) and lightning-fast code editor (<a target="_blank" href="https://code.visualstudio.com/">Visual Studio Code</a> by Microsoft). Yes, they are both free of cost like WordPress.</p>
<h2 id="heading-workflow"><strong>Workflow</strong></h2>
<p>As your workflow becomes more advanced and complex, it’s important for you to stay sane and keep enjoying life. In that case, you are going to need to streamline your workflow. Try task automation tools like <a target="_blank" href="https://gruntjs.com/">Grunt</a>/<a target="_blank" href="https://gulpjs.com/">Gulp</a> and use a version control system like <a target="_blank" href="https://git-scm.com/">git</a> to keep you from making blunders.</p>
<h2 id="heading-illustration-of-learning-path-guide-published-on-github"><strong>Illustration of Learning Path Guide Published on GitHub</strong></h2>
<p>To make things more clear for you, I have published an illustration of the Learning Path as a step-by-step guide on <a target="_blank" href="https://github.com/ihtishamzahoor/wordpress-learning-path">GitHub</a> which I have provided below.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/BglSkXSPbis8Tkk86z5kuf3VVx4Pt2KNkdfx" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Learn from it, give feedback, improve it to make it better for newbies, and by that means feel free to send PR requests.</p>
<h1 id="heading-resources"><strong>Resources</strong></h1>
<p>In case you are still worried that you are going to need more than a bunch of motivational words to actually start doing meaningful work, maybe you need like a step by step guide — well, worry no more. Follow the <a target="_blank" href="https://developer.wordpress.org/"><strong><em>WordPress WordPress Developer Handbook</em></strong></a> and <a target="_blank" href="https://codex.wordpress.org/"><strong><em>WordPress Developer Codex</em></strong></a> like religion and consider yourself in safe hands.</p>
<p>Moreover, you can receive great help from the <a target="_blank" href="https://wordpress.org/support/"><strong><em>WordPress Support</em></strong></a> forum as well as digging your answers from the Q&amp;A site <a target="_blank" href="https://stackoverflow.com/"><strong><em>Stack Overflow</em></strong></a>, which is immensely popular among the developer community.</p>
<p>Apart, from the official WordPress resources, support forum, and developer-centric Q&amp;A sites. There are a plethora of sites like <a target="_blank" href="https://wpbeginner.com/"><strong><em>WPBeginner</em></strong></a><strong><em>,</em></strong> made possible by the awesome WordPress community, offering WordPress centric free tutorials and guides.</p>
<p><a target="_blank" href="https://www.codexspot.com/category/tutorials/"><strong><em>CodexSpot</em></strong></a> is one such attempt by a bunch of <a target="_blank" href="https://www.codexspot.com/about-us/"><em>WordPress geeks</em></a> including yours truly to give back to the community. <em>CodexSpot</em> is an online platform, focused solely on providing web solutions. Our aim is to provide quality tutorials, DIY guides, and keep you up-to-date with web industry news and trend reports.</p>
<p>We are a huge supporter of free and open-source software initiative and don’t miss any opportunity to evangelize FOSS practices to promote this movement. Besides that, we also offer free web development generators and tools to speed up your development time.</p>
<p>Now, there is one other type of learning resource, which is premium courses. By comparison with free resources, the main benefit of premium ones is the timely support offered by the course instructors for their students. That is to say, the ability to get your queries answered by the very instructors from whom you are learning, hugely benefits you during your learning journey. Furthermore, they stay on top of the latest industry trends.</p>
<p>I have personally learned a great deal from the <a target="_blank" href="https://www.lynda.com/learning-paths/Web/become-a-junior-wordpress-developer"><strong><em>Lynda.com</em></strong></a> (now <em>LinkedIn Learning</em>) courses, highly recommended. I have also found <a target="_blank" href="https://onemonth.com/courses/wordpress"><strong><em>Learn WordPress</em></strong></a> course by <em>Chris Castiglione, a nice beginner-friendly course to start with. So, if you are looking for a premium course on WordPress, you will find any of these courses worth your buck</em>.</p>
<p>At this point, you have the dedication and tons of resources readily available for you to learn everything about WordPress. However, it is equally important that you understand the job market and what the companies seek in candidates applying for the WordPress developer position.</p>
<p><a target="_blank" href="https://www.toptal.com/">Toptal</a>, an exclusive network of the top freelancers in the world, has published a guide for hiring a “<a target="_blank" href="https://www.toptal.com/wordpress#hiring-guide">Great WordPress Developer</a>” which you can read to better align yourself with the most in-demand WordPress skills.</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>Don’t try to learn everything at once. Start with the basics. Implement what you’ve learned and then build from there. Take note of these following two not hard-and-fast rules for guidance, as these rules will come in handy in your journey.</p>
<ul>
<li><em>Just in Time (JIT) learning</em> is you learn the tool when you need it.</li>
<li><em>80/20 rule of learning</em> is you give 20% of your time to learning and 80% of your time implementing what you have learned already.</li>
</ul>
<p>Now repeat after me:</p>
<p>I learn.<br>I code!<br>I code again!!<br>I code some more!!!<br>I keep coding!!!!!</p>
<p>…and that is how you start in WordPress. Good Luck WordPresser and welcome to the WordPress family!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Learn Bootstrap 4 in this free 10-part course ]]>
                </title>
                <description>
                    <![CDATA[ By Per Harald Borgen _Click here to get to the course._ Bootstrap 4 represents a complete rewrite of the entire library, and it brings with it several new features and concepts to wrap your head around. So it can feel overwhelming to jump head-first... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/want-to-learn-bootstrap-4-heres-our-free-10-part-course-happy-easter-35c004dc45a4/</link>
                <guid isPermaLink="false">66d85266afbaabf7a144af11</guid>
                
                    <category>
                        <![CDATA[ Bootstrap ]]>
                    </category>
                
                    <category>
                        <![CDATA[ learning ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 27 Mar 2018 10:34:50 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*R01sFg28YootYvXwQE6zXg.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Per Harald Borgen</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*zCx3Kx42HlhcBm5oYMD2rA.png" alt="Image" width="600" height="400" loading="lazy">
_<a target="_blank" href="https://scrimba.com/g/gbootstrap4?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">Click here to get to the course.</a>_</p>
<p>Bootstrap 4 represents a complete rewrite of the entire library, and it brings with it several new features and concepts to wrap your head around. So it can feel overwhelming to jump head-first into the documentation in order to learn it.</p>
<p>That’s why we’ve teamed up with <a target="_blank" href="https://twitter.com/neil_rowe_">Neil Rowe</a> (previously known as <a target="_blank" href="https://www.youtube.com/user/CodersGuide">CodersGuide</a>) and created a <a target="_blank" href="https://scrimba.com/g/gbootstrap4?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">free full-length course on Bootstrap 4</a>. Neil previously created one of the most popular Bootstrap 3 courses on YouTube, so we’re very pleased that he’s chosen to use Scrimba for his follow-up course.</p>
<p>You can take the course today. Just head over <a target="_blank" href="https://scrimba.com/g/gbootstrap4?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">to the course page</a> and you’ll become a Bootstrap 4 master within an hour.</p>
<p>Now let’s have a closer look at what you’ll learn!</p>
<h4 id="heading-1-course-introduction">#1 Course introduction</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*zCx3Kx42HlhcBm5oYMD2rA.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the first screencast, you’ll get an overview of Bootstrap itself, and which utilities and components it brings with it. Neil also goes through the main benefits v4 brings to the table.</p>
<h4 id="heading-2-the-responsive-grid-system">#2 The Responsive Grid System</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*oOKLdoC4_mNFPV7HUfV-QA.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The course then follows up with one of the most important components of Bootstrap, the responsive grid system. Neil explains how to create various grids, with different breakpoints, column sizes and offsets.</p>
<h4 id="heading-3-responsive-navbars">#3 Responsive Navbars</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*h_AkQ1f7wBUorZ-lA2WXPA.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The navbar component is a big reason that many people use Bootstrap. In this lecture, you’ll learn how to build a responsive navbar which collapses into a hamburger menu on small screens.</p>
<h4 id="heading-4-modals">#4 Modals</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*be0Vaj3kUcchHvRb3uE1ZA.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Bootstrap also makes it super easy to create modals, which often come in handy. In this lecture, you’ll learn how to build them step-by-step.</p>
<h4 id="heading-5-forms">#5 Forms</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*2UPJmuKyHcySzxVcrzk3OA.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Forms are critical to most websites, so it’s good to know how to create them. So in this lecture, you’ll learn how to create a responsive signup form. Here, your skills from the responsive grid lecture will also come in handy.</p>
<h4 id="heading-6-list-groups">#6 List groups</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*N-WC9LzY_meovlsapChJUQ.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>List groups can be used for many different purposes. They can, for example, be used as a sidebar, a menu, a list of articles, or whatever you want, basically.</p>
<h4 id="heading-7-cards">#7 Cards</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*UYPC0IHtsW6d6WMYYQ9_OQ.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Bootstrap 4 introduces a whole new component called cards, which replace <a target="_blank" href="https://getbootstrap.com/docs/3.3/components/#panels">panels</a>, <a target="_blank" href="https://getbootstrap.com/docs/3.3/components/#wells">wells</a>, and <a target="_blank" href="https://getbootstrap.com/docs/3.3/components/#thumbnails">thumbnails</a>. A card is a flexible and extensible content container. In this lecture, you’ll learn how to build one using various components that commonly make up a card.</p>
<h4 id="heading-8-tables">#8 Tables</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*FEODV-0VvpaGC89Q8C-3aw.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Bootstrap 4 also comes with a bunch of classes for modifying tables, and this lecture will demo most of them. They’re opt-in, meaning you have to actively add a table class to turn a table into a Bootstrap table. This is unlike how it used to be before regular HTML tables were turned into Bootstrap tables automatically.</p>
<h4 id="heading-9-alerts">#9 Alerts</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*uVdJv8jn0yGSpgpHwLw0JQ.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Alerts aren’t particularly exciting, and there aren’t too many changes from previous versions of the library, so if you’ve used Bootstrap 2 or 3, you should be pretty familiar with all this. However, it’s important to get to know these, as giving your users messages and notifications via alerts can help make your website more user-friendly.</p>
<h4 id="heading-10-navigation-options">#10 Navigation options</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*9gHQ3xg00UBaO5xbaBHM9g.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Finally, the course wraps up with where it started, by giving you more tools in your belt when it comes to navigation bars, like tabs and drop-downs. This is handy to know, but not as core as the stuff in lecture two, which is why it comes at the end of the course.</p>
<p>By following all these lectures back-to-back, you should be able to start building websites with Bootstrap 4. And if you get stuck, you’ll be well-equipped to dive into <a target="_blank" href="https://getbootstrap.com/">the docs</a> for solving whatever issues you might have.</p>
<h3 id="heading-the-scrimba-format">The Scrimba format</h3>
<p>Finally, let’s also have a quick look at the technology behind the course. It’s built using Scrimba, an interactive coding screencast tool. A “scrim” look like normal video, however, it’s fully interactive. This means that you can edit the code inside the screencast.</p>
<p>Here’s a gif which explains the concept:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*4PWxbgV--7ZHlB-YVqavJg.gif" alt="Pause the screencast → Edit the code → Run it! → See your changes" width="600" height="400" loading="lazy"></p>
<p>Pause the screencast → Edit the code → Run it! → See your changes</p>
<p>This is great for when you feel you need to experiment with the code in order to properly understand it, or when you simply want to copy a piece of the code.</p>
<p>So what are you waiting for? Go ahead and take the <a target="_blank" href="https://scrimba.com/g/gbootstrap4?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">course</a> today!</p>
<p>Thanks for reading! My name is Per, I’m the co-founder of <a target="_blank" href="https://scrimba.com?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">Scrimba</a>, and I love helping people learn new skills. Follow me on <a target="_blank" href="https://twitter.com/perborgen">Twitter</a> if you’d like to be notified about new articles and resources.</p>
<hr>
<p>Thanks for reading! My name is Per Borgen, I'm the co-founder of <a target="_blank" href="https://scrimba.com?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">Scrimba</a> – the easiest way to learn to code. You should check out our <a target="_blank" href="https://scrimba.com/g/gresponsive?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">responsive web design bootcamp</a> if want to learn to build modern website on a professional level.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/08/bootcamp-banner.png" alt="Image" width="600" height="400" loading="lazy">
_<a target="_blank" href="https://scrimba.com/g/gresponsive?utm_source=freecodecamp.org&amp;utm_medium=referral&amp;utm_campaign=gbootstrap4_launch_article">Click here to get to the advanced bootcamp.</a>_</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
