HTML
Result
Skip Results Iframe
EDIT ON
Live
This Pen is owned by
Hexlet
on
CodePen
.
See more by @hexlet on CodePen
External CSS
https://raw.githubusercontent.com/twbs/bootstrap/main/scss/vendor/_rfs.scss
https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css
External JavaScript
https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js
{"__browser":{"country":"US","device":"unknown_device","mobile":false,"name":"unknown browser","platform":"unknown_platform","version":"0"},"__constants":{},"__CPDATA":{"domain_iframe":"https://cdpn.io","environment":"production","host":"codepen.io","iframe_allow":"accelerometer *; ambient-light-sensor *; camera *; display-capture *; encrypted-media *; geolocation *; gyroscope *; microphone *; midi *; payment *; vr *; web-share *; serial *; xr-spatial-tracking *","iframe_sandbox":"allow-downloads allow-forms allow-modals allow-pointer-lock allow-popups-to-escape-sandbox allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation"},"__graphql":{"data":{"errors":[{"message":"Cannot return null for non-nullable field Query.sessionUser"}],"data":null},"url":"https://codepen.io/graphql","api":"cprails"},"__pay_stripe_public_key":"pk_live_2GndomDfiklqpSNQn8FrGuwZSMIMzha7DkLJqlYe7IR0ihKAlKdiHg68JJc5eVPt68rzAjzAAVXcUwjySHRCsgjQQ00gtRBUFNH","__pay_braintree_env":"production","__boomboom":{"serve_url":"https://cdpn.io/cpe/boomboom","store_url":"https://codepen.io/cpe/boomboom/store"},"__pageType":"embed","__item":"{\"editor_settings\":{\"auto_run\":true,\"autocomplete\":false,\"code_folding\":true,\"css_pre_processor\":\"none\",\"css_prefix\":\"neither\",\"css_starter\":\"neither\",\"emmet_active\":true,\"font_size\":14,\"font_type\":\"system\",\"format_on_save\":false,\"html_pre_processor\":\"none\",\"indent_with\":\"spaces\",\"js_pre_processor\":\"none\",\"key_bindings\":\"normal\",\"line_numbers\":true,\"line_wrapping\":true,\"match_brackets\":true,\"snippets\":{\"markupSnippets\":{},\"stylesheetSnippets\":{}},\"tab_size\":2,\"theme\":\"twilight\",\"id\":\"LYBvmGp\",\"auto_save\":true},\"hashid\":\"LYBvmGp\",\"itemType\":\"pen\",\"resources\":[{\"url\":\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css\",\"order\":1,\"resource_type\":\"css\",\"par_content\":\"\"},{\"url\":\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js\",\"order\":0,\"resource_type\":\"js\",\"par_content\":\"\"},{\"url\":\"https://raw.githubusercontent.com/twbs/bootstrap/main/scss/vendor/_rfs.scss\",\"order\":0,\"resource_type\":\"css\",\"par_content\":\"// stylelint-disable scss/dimension-no-non-numeric-values\\n\\n// SCSS RFS mixin\\n//\\n// Automated responsive values for font sizes, paddings, margins and much more\\n//\\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\\n\\n// Configuration\\n\\n// Base value\\n$rfs-base-value: 1.25rem !default;\\n$rfs-unit: rem !default;\\n\\n@if $rfs-unit != rem and $rfs-unit != px {\\n @error \\\"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\\\";\\n}\\n\\n// Breakpoint at where values start decreasing if screen width is smaller\\n$rfs-breakpoint: 1200px !default;\\n$rfs-breakpoint-unit: px !default;\\n\\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\\n @error \\\"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\\\";\\n}\\n\\n// Resize values based on screen height and width\\n$rfs-two-dimensional: false !default;\\n\\n// Factor of decrease\\n$rfs-factor: 10 !default;\\n\\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\\n @error \\\"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\\\";\\n}\\n\\n// Mode. Possibilities: \\\"min-media-query\\\", \\\"max-media-query\\\"\\n$rfs-mode: min-media-query !default;\\n\\n// Generate enable or disable classes. Possibilities: false, \\\"enable\\\" or \\\"disable\\\"\\n$rfs-class: false !default;\\n\\n// 1 rem = $rfs-rem-value px\\n$rfs-rem-value: 16 !default;\\n\\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\\n$rfs-safari-iframe-resize-bug-fix: false !default;\\n\\n// Disable RFS by setting $enable-rfs to false\\n$enable-rfs: true !default;\\n\\n// Cache $rfs-base-value unit\\n$rfs-base-value-unit: unit($rfs-base-value);\\n\\n@function divide($dividend, $divisor, $precision: 10) {\\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\\n $dividend: abs($dividend);\\n $divisor: abs($divisor);\\n @if $dividend == 0 {\\n @return 0;\\n }\\n @if $divisor == 0 {\\n @error \\\"Cannot divide by 0\\\";\\n }\\n $remainder: $dividend;\\n $result: 0;\\n $factor: 10;\\n @while ($remainder > 0 and $precision >= 0) {\\n $quotient: 0;\\n @while ($remainder >= $divisor) {\\n $remainder: $remainder - $divisor;\\n $quotient: $quotient + 1;\\n }\\n $result: $result * 10 + $quotient;\\n $factor: $factor * .1;\\n $remainder: $remainder * 10;\\n $precision: $precision - 1;\\n @if ($precision < 0 and $remainder >= $divisor * 5) {\\n $result: $result + 1;\\n }\\n }\\n $result: $result * $factor * $sign;\\n $dividend-unit: unit($dividend);\\n $divisor-unit: unit($divisor);\\n $unit-map: (\\n \\\"px\\\": 1px,\\n \\\"rem\\\": 1rem,\\n \\\"em\\\": 1em,\\n \\\"%\\\": 1%\\n );\\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\\n $result: $result * map-get($unit-map, $dividend-unit);\\n }\\n @return $result;\\n}\\n\\n// Remove px-unit from $rfs-base-value for calculations\\n@if $rfs-base-value-unit == px {\\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\\n}\\n@else if $rfs-base-value-unit == rem {\\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\\n}\\n\\n// Cache $rfs-breakpoint unit to prevent multiple calls\\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\\n\\n// Remove unit from $rfs-breakpoint for calculations\\n@if $rfs-breakpoint-unit-cache == px {\\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\\n}\\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \\\"em\\\" {\\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\\n}\\n\\n// Calculate the media query value\\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\\n\\n// Internal mixin used to determine which media query needs to be used\\n@mixin _rfs-media-query {\\n @if $rfs-two-dimensional {\\n @if $rfs-mode == max-media-query {\\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\\n @content;\\n }\\n }\\n @else {\\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\\n @content;\\n }\\n }\\n }\\n @else {\\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\\n @content;\\n }\\n }\\n}\\n\\n// Internal mixin that adds disable classes to the selector if needed.\\n@mixin _rfs-rule {\\n @if $rfs-class == disable and $rfs-mode == max-media-query {\\n // Adding an extra class increases specificity, which prevents the media query to override the property\\n &,\\n .disable-rfs &,\\n &.disable-rfs {\\n @content;\\n }\\n }\\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\\n .enable-rfs &,\\n &.enable-rfs {\\n @content;\\n }\\n } @else {\\n @content;\\n }\\n}\\n\\n// Internal mixin that adds enable classes to the selector if needed.\\n@mixin _rfs-media-query-rule {\\n\\n @if $rfs-class == enable {\\n @if $rfs-mode == min-media-query {\\n @content;\\n }\\n\\n @include _rfs-media-query () {\\n .enable-rfs &,\\n &.enable-rfs {\\n @content;\\n }\\n }\\n }\\n @else {\\n @if $rfs-class == disable and $rfs-mode == min-media-query {\\n .disable-rfs &,\\n &.disable-rfs {\\n @content;\\n }\\n }\\n @include _rfs-media-query () {\\n @content;\\n }\\n }\\n}\\n\\n// Helper function to get the formatted non-responsive value\\n@function rfs-value($values) {\\n // Convert to list\\n $values: if(type-of($values) != list, ($values,), $values);\\n\\n $val: \\\"\\\";\\n\\n // Loop over each value and calculate value\\n @each $value in $values {\\n @if $value == 0 {\\n $val: $val + \\\" 0\\\";\\n }\\n @else {\\n // Cache $value unit\\n $unit: if(type-of($value) == \\\"number\\\", unit($value), false);\\n\\n @if $unit == px {\\n // Convert to rem if needed\\n $val: $val + \\\" \\\" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\\n }\\n @else if $unit == rem {\\n // Convert to px if needed\\n $val: $val + \\\" \\\" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\\n } @else {\\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\\n $val: $val + \\\" \\\" + $value;\\n }\\n }\\n }\\n\\n // Remove first space\\n @return unquote(str-slice($val, 2));\\n}\\n\\n// Helper function to get the responsive value calculated by RFS\\n@function rfs-fluid-value($values) {\\n // Convert to list\\n $values: if(type-of($values) != list, ($values,), $values);\\n\\n $val: \\\"\\\";\\n\\n // Loop over each value and calculate value\\n @each $value in $values {\\n @if $value == 0 {\\n $val: $val + \\\" 0\\\";\\n } @else {\\n // Cache $value unit\\n $unit: if(type-of($value) == \\\"number\\\", unit($value), false);\\n\\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\\n @if not $unit or $unit != px and $unit != rem {\\n $val: $val + \\\" \\\" + $value;\\n } @else {\\n // Remove unit from $value for calculations\\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\\n\\n // Only add the media query if the value is greater than the minimum value\\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\\n $val: $val + \\\" \\\" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\\n }\\n @else {\\n // Calculate the minimum value\\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\\n\\n // Calculate difference between $value and the minimum value\\n $value-diff: abs($value) - $value-min;\\n\\n // Base value formatting\\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\\n\\n // Use negative value if needed\\n $min-width: if($value < 0, -$min-width, $min-width);\\n\\n // Use `vmin` if two-dimensional is enabled\\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\\n\\n // Calculate the variable width between 0 and $rfs-breakpoint\\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\\n\\n // Return the calculated value\\n $val: $val + \\\" calc(\\\" + $min-width + if($value < 0, \\\" - \\\", \\\" + \\\") + $variable-width + \\\")\\\";\\n }\\n }\\n }\\n }\\n\\n // Remove first space\\n @return unquote(str-slice($val, 2));\\n}\\n\\n// RFS mixin\\n@mixin rfs($values, $property: font-size) {\\n @if $values != null {\\n $val: rfs-value($values);\\n $fluid-val: rfs-fluid-value($values);\\n\\n // Do not print the media query if responsive & non-responsive values are the same\\n @if $val == $fluid-val {\\n #{$property}: $val;\\n }\\n @else {\\n @include _rfs-rule () {\\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\\n\\n // Include safari iframe resize fix if needed\\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\\n }\\n\\n @include _rfs-media-query-rule () {\\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\\n }\\n }\\n }\\n}\\n\\n// Shorthand helper mixins\\n@mixin font-size($value) {\\n @include rfs($value);\\n}\\n\\n@mixin padding($value) {\\n @include rfs($value, padding);\\n}\\n\\n@mixin padding-top($value) {\\n @include rfs($value, padding-top);\\n}\\n\\n@mixin padding-right($value) {\\n @include rfs($value, padding-right);\\n}\\n\\n@mixin padding-bottom($value) {\\n @include rfs($value, padding-bottom);\\n}\\n\\n@mixin padding-left($value) {\\n @include rfs($value, padding-left);\\n}\\n\\n@mixin margin($value) {\\n @include rfs($value, margin);\\n}\\n\\n@mixin margin-top($value) {\\n @include rfs($value, margin-top);\\n}\\n\\n@mixin margin-right($value) {\\n @include rfs($value, margin-right);\\n}\\n\\n@mixin margin-bottom($value) {\\n @include rfs($value, margin-bottom);\\n}\\n\\n@mixin margin-left($value) {\\n @include rfs($value, margin-left);\\n}\\n\"}],\"tags\":[],\"id\":66289777,\"user_id\":1425525,\"html\":\"<div class=\\\"container\\\">\\n <h1 class=\\\"mb-4\\\">Professions</h1>\\n <div class=\\\"row\\\">\\n <div class=\\\"col\\\">\\n <table>\\n <thead>\\n <tr>\\n <th>№</th>\\n <th>Name of profession</th>\\n <th>Description</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr>\\n <td>1</td>\\n <td>Frontend Programmer</td>\\n <td>JavaScript is a programming language for frontend development. It is used by programmers to make websites dynamic and \\\"live\\\". The most in-demand and easiest language for beginners.</td>\\n </tr>\\n <tr>\\n <td>2</td>\\n <td>PHP Programmer</td>\\n <td>PHP is a server-side programming language. It is designed specifically for backend development. PHP is easier for beginners than most other server-side languages. Slack, Wikipedia, VKontakte use PHP.</td>\\n </tr>\\n <tr>\\n <td>3</td>\\n <td>Java Programmer</td>\\n <td>Java is a universal programming language. Works on any architecture and can be embedded in web applications. Widely used in development of desktop, web and mobile applications, in banking, scientific and industrial fields.</td>\\n </tr>\\n <tr>\\n <td>4</td>\\n <td>Python Programmer</td>\\n <td>Python is one of the most popular programming languages. It is used to develop artificial intelligence, websites, and games. This language is both popular and easy for beginners. It is not for nothing that Python is used by Google, Yandex, and Dropbox.</td>\\n </tr>\\n <tr>\\n <td>5</td>\\n <td>Node.js programmer</td>\\n <td>Node.js has extended JavaScript and made it a server-side programming language. It helps frontend efficiently interact with the database. Netflix, Uber, eBay use Node.js on their platforms.</td>\\n </tr>\\n <tr>\\n <td>6</td>\\n <td>Webmaster</td>\\n <td>In this profession, you will learn how to layout pages using HTML and CSS, and how to adapt websites for different screens. During the course, you will learn Sass, Flexbox, Bootstrap, and other tools and technologies.\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </div>\\n</div>\",\"css\":\"\",\"js\":\"\",\"html_pre_processor\":\"none\",\"css_pre_processor\":\"scss\",\"js_pre_processor\":\"none\",\"html_classes\":\"py-5\",\"css_starter\":\"neither\",\"js_library\":null,\"created_at\":\"2023-02-07T09:16:29.813Z\",\"updated_at\":\"2023-02-07T09:21:05.942Z\",\"title\":\"bootstrap_basic_course_table_1_en\",\"description\":\"\",\"slug_hash\":\"LYBvmGp\",\"head\":\"\",\"private\":false,\"has_animation\":false,\"team_id\":0,\"css_prefix\":\"neither\",\"template\":false,\"parent_id\":46981228,\"comments_count\":0,\"custom_screenshot_filename\":null,\"loves_count\":1,\"pick\":false,\"popularity\":5,\"views_count\":3,\"pick_visible_at\":null,\"cpid\":\"01862b29-90f5-7f9d-891e-301af9d4216f\",\"is_new_editor_pen\":false,\"access\":\"Public\",\"pen_hash\":null}","__processorsMap":{"autoprefixer":"autoprefixer-10","babel":"babel-7","coffeescript":"coffeescript-2","format-1":"format-1","flutter":"flutter-1","haml":"haml-4","less":"less-3","lint-1":"lint-1","livescript":"livescript-1","markdown":"markdown-11","postcss":"postcss-7","pug":"pug-2","sass":"sass-1","scss":"sass-1","sass-ruby-3":"sass-ruby-3","sass-ruby-compass-3":"sass-ruby-compass-3","slim":"slim-3","stylus":"stylus-0","typescript":"typescript-4","vue":"vue-2","vue3":"vue-3"},"__favicon_mask_icon":"https://cpwebassets.codepen.io/assets/favicon/logo-pin-b4b4269c16397ad2f0f7a01bcdf513a1994f4c94b8af2f191c09eb0d601762b1.svg","__favicon_shortcut_icon":"https://cpwebassets.codepen.io/assets/favicon/favicon-aec34940fbc1a6e787974dcd360f2c6b63348d4b1f4e06c77743096d55480f33.ico","__path_to_iframe_console_runner":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeConsoleRunner-6d8bf8b4b479137260842506acbb12717dace0823c023e08b96360e60b0840d9.js","__path_to_iframe_refresh_css":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeRefreshCSS-44fe83e49b63affec96918c9af88c0d80b209a862cf87ac46bc933074b8c557d.js","__path_to_iframe_runtime_errors":"https://cpwebassets.codepen.io/assets/editor/iframe/iframeRuntimeErrors-4f205f2c14e769b448bcf477de2938c681660d5038bc464e3700256713ebe261.js","__path_to_processor_worker":"https://cpwebassets.codepen.io/assets/packs/router.js","__path_to_stop_execution_on_timeout":"https://cpwebassets.codepen.io/assets/common/stopExecutionOnTimeout-2c7831bb44f98c1391d6a4ffda0e1fd302503391ca806e7fcc7b9b87197aec26.js","__pen_normalize_css_url":"https://public.codepenassets.com/css/normalize-5.0.0.min.css","__pen_prefix_free_url":"https://public.codepenassets.com/js/prefixfree-1.0.7.min.js","__pen_reset_css_url":"https://public.codepenassets.com/css/reset-2.0.min.css"}