1<!DOCTYPE html><html lang="en-US" prefix="og: https://ogp.me/ns#"><head><meta charset="UTF-8">
1<script>/* 7ESL local-network guard */ 2(function(){function L(u){if(typeof u!=='string')return false;var s=u.toLowerCase();return s.indexOf('//localhost')>-1||s.indexOf('//127.0.0.1')>-1||s.indexOf('//0.0.0.0')>-1||s.indexOf('//[::1]')>-1||s.indexOf('//192.168.')>-1||s.indexOf('//10.0.')>-1;} 3if(window.fetch){var f=window.fetch.bind(window);window.fetch=function(i,o){var u=(typeof i==='string')?i:(i&&i.url);if(L(u)){return Promise.resolve(new Response('',{status:204}));}return f(i,o);};} 4if(window.XMLHttpRequest){var op=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(m,u){if(typeof u==='string'&&L(u)){arguments[1]='about:blank';}return op.apply(this,arguments);};}})();</script>
4
4<script id="esl-aud-js">(function(d){try{var e=d.documentElement;if(e.getAttribute("data-aud"))return;var m=/(?:^|;\s*)esl_aud=([a-z]{1,8})/.exec(d.cookie||"");e.setAttribute("data-aud",{teacher:"teacher",learner:"learner",kid:"kid",skip:"none"}[m?m[1]:""]||"ask");}catch(x){}})(document);</script>
4 <meta name="viewport" content="width=device-width, initial-scale=1"><title>Articles • 7ESL</title><meta name="description" content="Discover the essentials of using articles in English grammar with our comprehensive guide. Learn the correct application of 'a,' 'an,' and 'the' to enhance your writing and speaking skills."/><meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/><link rel="canonical" href="https://7esl.com/category/grammar/articles/" /><meta property="og:locale" content="en_US" /><meta property="og:type" content="article" /><meta property="og:title" content="Articles • 7ESL" /><meta property="og:description" content="Discover the essentials of using articles in English grammar with our comprehensive guide. Learn the correct application of 'a,' 'an,' and 'the' to enhance your writing and speaking skills." /><meta property="og:url" content="https://7esl.com/category/grammar/articles/" /><meta property="og:site_name" content="7ESL" /><meta property="article:publisher" content="https://www.facebook.com/7ESLAI" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="Articles • 7ESL" /><meta name="twitter:description" content="Discover the essentials of using articles in English grammar with our comprehensive guide. Learn the correct application of 'a,' 'an,' and 'the' to enhance your writing and speaking skills." /><meta name="twitter:label1" content="Posts" /><meta name="twitter:data1" content="5" />
4<script type="application/ld+json" class="rank-math-schema">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://7esl.com/category/grammar/articles/#webpage","name":"Articles","url":"https://7esl.com/category/grammar/articles/","inLanguage":"en-US","isPartOf":{"@type":"WebSite","@id":"https://7esl.com/#website","name":"7ESL","url":"https://7esl.com/"},"publisher":{"@type":"Organization","name":"7ESL","url":"https://7esl.com/"}},{"@type":"BreadcrumbList","@id":"https://7esl.com/category/grammar/articles/#breadcrumb","itemListElement":[{"@type":"ListItem","position":"1","item":{"@id":"https://7esl.com","name":"Home"}},{"@type":"ListItem","position":"2","item":{"@id":"https://7esl.com/knowledge-base/","name":"Knowledge Base"}},{"@type":"ListItem","position":"3","item":{"@id":"https://7esl.com/category/grammar/","name":"Grammar"}},{"@type":"ListItem","position":"4","item":{"@id":"https://7esl.com/category/grammar/articles/","name":"Articles"}}]}]}</script>
4 <link rel='dns-prefetch' href='//scripts.mediavine.com' /><link rel='dns-prefetch' href='//scripts.pubnation.com' /><link rel='dns-prefetch' href='//keywords.pubnation.com' /><link href='https://scripts.pubnation.com' crossorigin='anonymous' rel='preconnect' /><link href='https://keywords.pubnation.com' crossorigin='anonymous' rel='preconnect' /><link href='https://fonts.gstatic.com' crossorigin rel='preconnect' /><link href='https://fonts.googleapis.com' crossorigin rel='preconnect' /><style id="wp-img-auto-sizes-contain-inline-css">img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 5/*# sourceURL=wp-img-auto-sizes-contain-inline-css */</style><style id="global-styles-inline-css">:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--contrast: var(--contrast);--wp--preset--color--contrast-2: var(--contrast-2);--wp--preset--color--contrast-3: var(--contrast-3);--wp--preset--color--base: var(--base);--wp--preset--color--base-2: var(--base-2);--wp--preset--color--base-3: var(--base-3);--wp--preset--color--accent: var(--accent);--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
5--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--quicksand: Quicksand, sans-serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-contrast-color{color: var(--wp--preset--color--contrast) !important;}.has-contrast-2-color{color: var(--wp--preset--color--contrast-2) !important;}.has-contrast-3-color{color: var(--wp--preset--color--contrast-3) !important;}.has-base-color{color: var(--wp--preset--color--base) !important;}.has-base-2-color{color: var(--wp--preset--color--base-2) !important;}.has-base-3-color{color: var(--wp--preset--color--base-3) !important;}.has-accent-color{color: var(--wp--preset--color--accent) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-contrast-background-color{background-color: var(--wp--preset--color--contrast) !important;}.has-contrast-2-background-color{background-color: var(--wp--preset--color--contrast-2) !important;}.has-contrast-3-background-color{background-color: var(--wp--preset--color--contrast-3) !important;}.has-base-background-color{background-color: var(--wp--preset--color--base) !important;}.has-base-2-background-color{background-color: var(--wp--preset--color--base-2) !important;}.has-base-3-background-color{background-color: var(--wp--preset--color--base-3) !important;}.has-accent-background-color{background-color: var(--wp--preset--color--accent) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-contrast-border-color{border-color: var(--wp--preset--color--contrast) !important;}.has-contrast-2-border-color{border-color: var(--wp--preset--color--contrast-2) !important;}.has-contrast-3-border-color{border-color: var(--wp--preset--color--contrast-3) !important;}.has-base-border-color{border-color: var(--wp--preset--color--base) !important;}.has-base-2-border-color{border-color: var(--wp--preset--color--base-2) !important;}.has-base-3-border-color{border-color: var(--wp--preset--color--base-3) !important;}.has-accent-border-color{border-color: var(--wp--preset--color--accent) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
5.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-quicksand-font-family{font-family: var(--wp--preset--font-family--quicksand) !important;} 6/*# sourceURL=global-styles-inline-css */</style><link rel='stylesheet' id='generate-google-fonts-css' href='https://fonts.googleapis.com/css?family=Quicksand:300,regular,500,700&display=swap&ver=3.6.1' media='all' />
6<script type="text/javascript">window._nslDOMReady = (function () { 7 const executedCallbacks = new Set(); 8 9 return function (callback) { 10 /** 11 * Third parties might dispatch DOMContentLoaded events, so we need to ensure that we only run our callback once! 12 */ 13 if (executedCallbacks.has(callback)) return; 14 15 const wrappedCallback = function () { 16 if (executedCallbacks.has(callback)) return; 17 executedCallbacks.add(callback); 18 callback(); 19 }; 20 21 if (document.readyState === "complete" || document.readyState === "interactive") { 22 wrappedCallback(); 23 } else { 24 document.addEventListener("DOMContentLoaded", wrappedCallback); 25 } 26 }; 27 })();</script>
27
27<script id="breeze-prefetch-js-extra">var breeze_prefetch = {"local_url":"https://7esl.com","ignore_remote_prefetch":"1","ignore_list":["wp-admin","wp-login.php"]}; 28//# sourceURL=breeze-prefetch-js-extra</script>
28
28<script id="mv-script-wrapper-js" async="async" fetchpriority="high" data-noptimize="1" data-cfasync="false" data-mv-mcp="2.10.12" src="https://scripts.mediavine.com/tags/7esl.js?ver=7.1.2"></script>
28 <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://7esl.com/xmlrpc.php?rsd" /><link rel="preload" as="font" type="font/woff2" href="https://7esl.com/wp-content/uploads/fonts/6xK-dSZaM9iE8KbpRA_LJ3z8mH9BOJvgkP8o18S0wx40QDw.woff2" crossorigin><link rel="icon" href="https://7esl.com/wp-content/uploads/2023/03/cropped-7ESL-Favicon-150x150.png" sizes="32x32" /><link rel="icon" href="https://7esl.com/wp-content/uploads/2023/03/cropped-7ESL-Favicon-300x300.png" sizes="192x192" /><link rel="apple-touch-icon" href="https://7esl.com/wp-content/uploads/2023/03/cropped-7ESL-Favicon-300x300.png" /><meta name="msapplication-TileImage" content="https://7esl.com/wp-content/uploads/2023/03/cropped-7ESL-Favicon-300x300.png" />
28<script id="sevenesl-avatar-fallback">document.addEventListener('DOMContentLoaded', function () { 29 var fallback = 'https://7esl.com/wp-content/plugins/7esl-core/assets/images/default_avatar.png'; 30 document.querySelectorAll('img.avatar, .forum-avatar-link img, .wrapAvatar img.avatarTutor, img.avatarTutor, img.avatarUser').forEach(function (img) { 31 img.addEventListener('error', function handleError() { 32 if (img.getAttribute('src') !== fallback) { 33 img.setAttribute('src', fallback); 34 } 35 }, { once: true }); 36 }); 37 });</script>
37
37<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-js-jquery-jquery.min-6836d82c2675.js?ver=1790251294"></script>
37<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-js-js-front-end-breeze-prefetch-links.min-3c10be81bf6e.js?ver=1790251294"></script>
37<link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_1-a0063705c9d5.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_2-d3e84902fbfa.css?ver=1790251294" rel="stylesheet" /><style type="text/css" media="all">img[width][height]{height:auto}.gb-button,.tag,.rank-math-breadcrumb,.breadcrumb,.ez-toc-title,.ez-toc-title-container{min-height:1px}</style><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-7esl-core-assets-thinklab-0a81d6875288.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-7esl-core-assets-forum-redesign-e34b5a59e8a2.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-fonts-inter-inter-6b77128a995a.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_4-9077cbb97de5.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_5-e9a280b7c847.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_6-e57fcc13046c.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-assets-css-style-18c2a1dc22eb.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-assets-css-plyr-v3.7.2-e4f19c2644a6.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-novashare-css-style.min-90542393b44d.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_7-500e0b834c6d.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-css-components-widget-areas.min-b6b59ce9e554.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-assets-css-main.min-6e916044c122.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_8-dc6ca685ebbd.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-tests-assets-tests-f2d9ff9f3e69.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-7esl-core-assets-esl-toc-4d563c24623c.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-tests-assets-article-tabs-1eaa751632f2.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-7esl-core-assets-site-chrome-e51cc8c2ef12.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-functions-css-style.min-f9b95f7711b4.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-7esl-core-assets-sevenesl-ui-fixes-277d23690ab5.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-7esl-core-assets-category-editorial-cdaee314d5f1.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-functions-css-navigation-branding-flex.min-75b5071a0a09.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_9-c66a0c78d33b.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_10-ad4d0ae8724b.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_11-2ac4270b1048.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_12-4e002ea9bc5b.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_13-177401c7150a.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_14-650e59be5ed8.css?ver=1790251294" rel="stylesheet" /><link type="text/css" media="all" href="https://7esl.com/wp-content/cache/breeze-minification/css/breeze_category-grammar-articles-1-112735-inline_15-0c72a66d8df5.css?ver=1790251294" rel="stylesheet" /></head><body class="archive category category-articles category-37395 wp-custom-logo wp-embed-responsive wp-theme-generatepress escx-active post-image-below-header post-image-aligned-center generate-columns-activated sticky-menu-slide sticky-enabled desktop-sticky-menu right-sidebar nav-float-right separate-containers header-aligned-left dropdown-hover"><div class="escx-topbar"><div class="escx-wrap"><div class="escx-topbar__left"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#f5a623" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20 15 15 0 0 1 0-20"/></svg> <span>Trusted by 10M+ learners worldwide — free lessons, tools & games</span></div><div class="escx-topbar__right"> <a href="https://7esl.com/forum/">Forums</a> <a href="https://7esl.com/app/">Download App</a> <a href="https://7esl.com/membership/?src=topbar_adfree" class="escx-topbar__pill escx-topbar__pill--af">Go ad-free</a> <a href="https://7esl.com/membership/?src=topbar" class="escx-topbar__pill escx-topbar__pill--up">â¡ Go Pro</a> <a href="https://7esl.com/tutor-register/" class="escx-topbar__pill" data-aud-hide="learner kid ask none">â Become a Tutor</a></div></div></div><header class="escx" id="escxHeader"><div class="escx-wrap escx__bar"> <a href="https://7esl.com/" class="escx-logo"> <img loading="lazy" src="https://7esl.com/wp-content/plugins/7esl-core/assets/images/logo-7esl-dark.svg" alt="7ESL" width="131" height="34" 38onerror="this.style.display='none';this.nextElementSibling.style.display='inline-flex'"> <span style="display:none;align-items:center;gap:8px"><span class="escx-logo__mark"><svg width="22" height="22" viewBox="0 0 24 24" fill="none"><path d="M3 7l9-4 9 4-9 4-9-4z" fill="#fff"/><path d="M7 10v5c0 1.5 2.2 2.5 5 2.5s5-1 5-2.5v-5" stroke="#fff" stroke-width="1.6" fill="none"/></svg></span>7<b>ESL</b></span> </a><nav class="escx-nav" aria-label="Primary"><div class="escx-nav__item"> <a href="https://7esl.com/knowledge-base/">Learn <svg class="escx-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 9l6 6 6-6"/></svg></a><div class="escx-mega" style="min-width:860px"><div class="escx-mega__grid" style="grid-template-columns:1fr 1fr 1fr 1fr"><div><div class="escx-col__h">Core skills</div> <a class="escx-mlink" href="https://7esl.com/category/grammar/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Grammar</span><span class="escx-mlink__ds">Rules, tenses & structure</span></span></a><a class="escx-mlink" href="https://7esl.com/category/vocabulary/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Vocabulary</span><span class="escx-mlink__ds">Word lists by topic</span></span></a><a class="escx-mlink" href="https://7esl.com/category/writing/"><span class="escx-mlink__ic">
38â</span><span><span class="escx-mlink__tt">Writing</span><span class="escx-mlink__ds">Essays, emails & style</span></span></a><a class="escx-mlink" href="https://7esl.com/category/speaking/"><span class="escx-mlink__ic">ð¤</span><span><span class="escx-mlink__tt">Speaking</span><span class="escx-mlink__ds">Conversation & fluency</span></span></a></div><div><div class="escx-col__h">Words & expressions</div> <a class="escx-mlink" href="https://7esl.com/category/idioms/"><span class="escx-mlink__ic">ð¡</span><span><span class="escx-mlink__tt">Idioms</span><span class="escx-mlink__ds">Common expressions</span></span></a><a class="escx-mlink" href="https://7esl.com/category/slang/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Slang</span><span class="escx-mlink__ds">Everyday informal English</span></span></a><a class="escx-mlink" href="https://7esl.com/category/internet-slang/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Internet Slang</span><span class="escx-mlink__ds">Online & texting terms</span></span></a><a class="escx-mlink" href="https://7esl.com/category/positive-words/"><span class="escx-mlink__ic">â¨</span><span><span class="escx-mlink__tt">Positive Words</span><span class="escx-mlink__ds">Words & phrases that uplift</span></span></a></div><div><div class="escx-col__h">More topics</div> <a class="escx-mlink" href="https://7esl.com/category/business-english/"><span class="escx-mlink__ic">ð¼</span><span><span class="escx-mlink__tt">Business English</span><span class="escx-mlink__ds">Workplace & professional</span></span></a><a class="escx-mlink" href="https://7esl.com/category/visual-vocabulary/"><span class="escx-mlink__ic">ð¨</span><span><span class="escx-mlink__tt">Visual Vocabulary</span><span class="escx-mlink__ds">Learn words with pictures</span></span></a><a class="escx-mlink" href="https://7esl.com/category/american-and-british-english/"><span class="escx-mlink__ic">ð¬ð§</span><span><span class="escx-mlink__tt">British vs. American</span><span class="escx-mlink__ds">Spelling & usage differences</span></span></a><a class="escx-mlink" href="https://7esl.com/category/foreign-language/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Foreign Words</span><span class="escx-mlink__ds">Loanwords used in English</span></span></a><a class="escx-mlink" href="https://7esl.com/category/words-list/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Words List</span><span class="escx-mlink__ds">Curated word collections</span></span></a></div><div class="escx-feat"><div><h4>Free Courses</h4><p>Step-by-step modules with lessons, quizzes & progress tracking.</p></div> <a class="escx-feat__cta" href="https://7esl.com/courses/">Browse all courses →</a></div></div><div class="escx-mega__foot"><span>Thousands of free lessons on grammar, vocabulary, idioms & more</span><a href="https://7esl.com/knowledge-base/">Browse all topics →</a></div></div></div><div class="escx-nav__item"> <a href="https://7esl.com/tests/">Tests <span class="escx-badge escx-badge--hot">HOT</span> <svg class="escx-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 9l6 6 6-6"/></svg></a><div class="escx-mega" style="min-width:520px"><div class="escx-mega__grid" style="grid-template-columns:1.15fr 1fr"><div><div class="escx-col__h">Browse tests</div> <a class="escx-mlink" href="https://7esl.com/english-level-test/"><span class="escx-mlink__ic">ð¯</span><span><span class="escx-mlink__tt">Level Tests</span><span class="escx-mlink__ds">Find your CEFR level (A1–C2)</span></span></a><a class="escx-mlink" href="https://7esl.com/exams/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Exam Practice</span><span class="escx-mlink__ds">IELTS, TOEFL, Cambridge & more</span></span></a><a class="escx-mlink" href="https://7esl.com/practice/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Practice Tests</span><span class="escx-mlink__ds">By skill, topic & level</span></span></a></div><div class="escx-feat" style="background:linear-gradient(160deg,#163C66,#0B2540)"><div><h4>
38Exam Simulator</h4><p>Timed, auto-marked papers with instant scores, model answers & XP.</p></div> <a class="escx-feat__cta" href="https://7esl.com/exams/">Start a mock exam →</a></div></div></div></div><div class="escx-nav__item"> <a href="https://7esl.com/tools/">Tools <svg class="escx-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 9l6 6 6-6"/></svg></a><div class="escx-mega" style="min-width:560px"><div class="escx-mega__grid" style="grid-template-columns:1fr 1fr"><div><div class="escx-col__h">Learn & write</div> <a class="escx-mlink" href="https://7esl.com/learning-tools/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Learning Tools</span><span class="escx-mlink__ds">Flashcards, vocabulary & IELTS practice</span></span></a><a class="escx-mlink" href="https://7esl.com/writing-tools/"><span class="escx-mlink__ic">â</span><span><span class="escx-mlink__tt">Writing Tools</span><span class="escx-mlink__ds">Grammar checker, paraphraser, summarizer</span></span></a><a class="escx-mlink" href="https://7esl.com/word-tools/"><span class="escx-mlink__ic">ð²</span><span><span class="escx-mlink__tt">Word Tools</span><span class="escx-mlink__ds">Wordle, anagram & scrabble solvers</span></span></a><a class="escx-mlink" href="https://7esl.com/picture-vocabulary/"><span class="escx-mlink__ic">ð¨</span><span><span class="escx-mlink__tt">Picture Vocabulary</span><span class="escx-mlink__ds">Learn vocabulary with images</span></span></a></div><div><div class="escx-col__h">Teaching & speech</div> <a class="escx-mlink" href="https://7esl.com/teacher-tools/"><span class="escx-mlink__ic">ð«</span><span><span class="escx-mlink__tt">Teacher Tools</span><span class="escx-mlink__ds">Worksheets, flashcards & bingo</span></span></a><a class="escx-mlink" href="https://7esl.com/how-to-pronounce/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Pronunciation Tools</span><span class="escx-mlink__ds">Say any word, name or brand</span></span></a><a class="escx-mlink" href="https://7esl.com/spelling-tools/"><span class="escx-mlink__ic">ð </span><span><span class="escx-mlink__tt">Spelling Tools</span><span class="escx-mlink__ds">NATO alphabet, misspellings & more</span></span></a></div></div><div class="escx-mega__foot"><span>80+ free English tools — no signup needed</span><a href="https://7esl.com/tools/">See all tools →</a></div></div></div><div class="escx-nav__item"> <a href="https://7esl.com/games/">Games <svg class="escx-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 9l6 6 6-6"/></svg></a><div class="escx-mega" style="min-width:560px"><div class="escx-mega__grid" style="grid-template-columns:1fr 1fr 1fr"><div><div class="escx-col__h">Categories</div> <a class="escx-mlink" href="https://7esl.com/word-games/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Word Games</span><span class="escx-mlink__ds">Wordle, Spelling Bee, Anagram</span></span></a><a class="escx-mlink" href="https://7esl.com/vocabulary-games/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Vocabulary Games</span><span class="escx-mlink__ds">Match, flashcards, memory</span></span></a></div><div><div class="escx-col__h"> </div> <a class="escx-mlink" href="https://7esl.com/grammar-games/"><span class="escx-mlink__ic">ð§</span><span><span class="escx-mlink__tt">Grammar Games</span><span class="escx-mlink__ds">Cloze, sentence builder</span></span></a><a class="escx-mlink" href="https://7esl.com/kids-games/"><span class="escx-mlink__ic">ð§¸</span><span><span class="escx-mlink__tt">Kids Games</span><span class="escx-mlink__ds">Fun games for ages 4–9</span></span></a><a class="escx-mlink" href="https://7esl.com/pronunciation-games/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Pronunciation & Spelling</span><span class="escx-mlink__ds">Listen, choose, spell</span></span></a></div><div class="escx-feat" style="background:linear-gradient(160deg,#F5A623,#D98A00);color:#3a2700"><div><h4 style="color:#3a2700">Earn XP & Badges</h4><p style="color:#5a3f00">Every game scores XP, levels you up and unlocks shields.</p></div> <a class="escx-feat__cta" style="background:#0B2540;color:#fff" href="https://7esl.com/games/">Play all games →</a></div></div></div></div><div class="escx-nav__item"> <a href="https://7esl.com/teacher-tools/">For Teachers <svg class="escx-chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M6 9l6 6 6-6"/></svg></a><div class="escx-mega" style="min-width:640px"><div class="escx-mega__grid" style="grid-template-columns:1fr 1fr"><div><div class="escx-col__h">Classroom material</div> <a class="escx-mlink" href="https://7esl.com/category/esl-resources/worksheets/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">Worksheets</span><span class="escx-mlink__ds">Printable, ready for class</span></span></a><a class="escx-mlink" href="https://7esl.com/category/esl-resources/esl-pdfs/"><span class="escx-mlink__ic">ð</span><span><span class="escx-mlink__tt">PDF Books</span><span class="escx-mlink__ds">Free downloadable books</span></span></a><a class="escx-mlink" href="https://7esl.com/picture-vocabulary/"><span class="escx-mlink__ic">ð¨</span><span><span class="escx-mlink__tt">Picture Vocabulary</span><span class="escx-mlink__ds">Flashcard images by topic</span></span></a><a class="escx-mlink" href="https://7esl.com/kids-games/"><span class="escx-mlink__ic">ð§¸</span><span><span class="escx-mlink__tt">Kids Games</span><span class="escx-mlink__ds">For young learners</span></span></a></div><div><div class="escx-col__h">Your tools</div> <a class="escx-mlink" href="https://7esl.com/teacher-tools/"><span class="escx-mlink__ic">ð«</span><span><span class="escx-mlink__tt">Teacher Tools</span><span class="escx-mlink__ds">Worksheet makers, bingo, flashcards</span></span></a><a class="escx-mlink" data-aud-hide="learner kid ask none" href="https://7esl.com/tutor-register/"><span class="escx-mlink__ic">â</span><span><span class="escx-mlink__tt">Become a Tutor</span><span class="escx-mlink__ds">Teach 1-on-1 and get paid</span></span></a><a class="escx-mlink" href="https://7esl.com/tutors/"><span class="escx-mlink__ic">ð¨âð«</span><span><span class="escx-mlink__tt">Find a Tutor</span><span class="escx-mlink__ds">1-on-1 lessons via Google Meet</span></span></a></div></div><div class="escx-mega__foot"><span>Free worksheet makers — no signup needed</span><a href="https://7esl.com/teacher-tools/">All teacher tools →</a></div></div></div></nav><div class="escx__spacer"></div><div class="escx__actions"> <button class="escx-icbtn" id="escxSearchBtn" aria-label="Search"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.3-4.3"/></svg></button> <a class="escx-btn escx-btn--ghost" href="https://7esl.com/login/">Login</a> <a class="escx-btn escx-btn--pri" href="https://7esl.com/signup/">Sign up free</a></div> <button class="escx-burger" id="escxBurger" aria-label="Open menu"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#163C66" stroke-width="2.2"><path d="M3 6h18M3 12h18M3 18h18"/></svg></button></div><div class="escx-search" id="escxSearch"><form class="escx-wrap" role="search" method="get" action="https://7esl.com/"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#5B6B79" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.3-4.3"/></svg> <input type="search" name="s" placeholder="Search lessons, tools, games, exams…"> <button class="escx-btn escx-btn--pri" type="submit">Search</button></form></div></header> <a class="screen-reader-text skip-link" href="#content" title="Skip to content">Skip to content</a><div class="page-hero"><div class="inside-page-hero grid-container grid-parent"><meta http-equiv="Content-Security-Policy" content="block-all-mixed-content" /><meta name="google-site-verification" content="AGR3MNmtsz8nyGh7BE2vXcg-tc27_0UNpdbI52vqJRM" /><meta name="p:domain_verify" content="310d9a8637368dc8a09c3b4d82add598"/>
vendor: 64 bytes, line 38
38 <script async src="https://www.googletagmanager.com/gtag/js?id=
38G-D3Z7V8R0BW
vendor: 12 bytes, line 38
38"></script>
38<script>
vendor: 134 bytes, lines 38-42
38window.dataLayer = window.dataLayer || []; 39 function gtag(){dataLayer.push(arguments);} 40 gtag('js', new Date()); 41 42 gtag('config', '
42G-D3Z7V8R0BW
vendor: 3 bytes, line 42
42');
42</script>
42 </div></div><div class="site grid-container container hfeed" id="page"><div class="site-content" id="content"><div class="content-area" id="primary"><main class="site-main" id="main"><div class="sevenesl-archive-breadcrumbs inside-article"><nav class="sevenesl-breadcrumbs" aria-label="Breadcrumbs"><nav aria-label="breadcrumbs" class="rank-math-breadcrumb"><p><a href="https://7esl.com">Home</a><span class="separator"> ⺠</span><a href="https://7esl.com/knowledge-base/">Knowledge Base</a><span class="separator"> ⺠</span><a href="https://7esl.com/category/grammar/">Grammar</a><span class="separator"> ⺠</span><span class="last">Articles</span></p></nav></nav></div><div class="generate-columns-container "><section class="sevenesl-archive-hero inside-article has-parent-category has-landing-content"><div class="sevenesl-archive-hero__surface"><div class="sevenesl-archive-parent-wrap"> <a class="sevenesl-parent-badge" href="https://7esl.com/category/grammar/"> <span class="sevenesl-parent-badge__icon" aria-hidden="true">â£</span> <span>Grammar</span> </a></div><h1 class="page-title sevenesl-archive-title">Articles</h1><div class="esl-cat-tool-cta" style="display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:16px 0 4px;padding:14px 18px;border:1px solid #bae6fd;border-radius:14px;background:linear-gradient(135deg,#f0f9ff,#ecfeff)"><div style="flex:1 1 260px;min-width:0"><div style="font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#0369a1;margin-bottom:2px">Free tool for this topic</div><div style="font-size:17px;font-weight:800;color:#0f172a;line-height:1.25">Grammar Checker</div><div style="font-size:13px;color:#475569;margin-top:3px">Check your writing for grammar, spelling and punctuation mistakes.</div></div><a class="esl-cat-tool-cta__btn" href="https://7esl.com/grammar-check/" style="flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;text-decoration:none;font-weight:700;font-size:14px;padding:11px 20px;border-radius:999px">Open the tool →</a></div><div class="sevenesl-archive-stats" aria-label="Category overview"><div class="sevenesl-archive-stat-card"> <span class="sevenesl-archive-stat-card__label">Articles</span> <strong class="sevenesl-archive-stat-card__value">5</strong></div><div class="sevenesl-archive-stat-card"> <span class="sevenesl-archive-stat-card__label">Subcategories</span> <strong class="sevenesl-archive-stat-card__value">0</strong></div><div class="sevenesl-level-tags-strip" aria-label="Levels"><div class="sevenesl-level-tags-strip__items"> <a 43class="sevenesl-level-tag-pill sevenesl-level-tag-pill--a" 44href="https://7esl.com/courses/a1-english/" 45> <span>A1</span> </a> <a 46class="sevenesl-level-tag-pill sevenesl-level-tag-pill--a" 47href="https://7esl.com/courses/a2-english/" 48> <span>A2</span> </a> <a 49class="sevenesl-level-tag-pill sevenesl-level-tag-pill--b" 50href="https://7esl.com/courses/b1-english/" 51> <span>B1</span> </a> <a 52class="sevenesl-level-tag-pill sevenesl-level-tag-pill--b" 53href="https://7esl.com/courses/b2-english/" 54> <span>B2</span> </a></div></div></div></div></section><section class="sevenesl-category-editorial inside-article" aria-label="Articles Guide"><div class="entry-content sevenesl-category-entry-content"><div id="esl-toc" class="esl-toc"><button type="button" class="esl-toc__title" aria-expanded="true" aria-controls="esl-toc-list"><span class="esl-toc__title-text">Contents</span><span class="esl-toc__toggle" aria-hidden="true"></span></button><nav class="esl-toc__nav" aria-label="Contents"><ul id="esl-toc-list" class="esl-toc__list"><li class="esl-toc__item esl-toc__item--h2"><div class="esl-toc__row"><a class="esl-toc__link" href="#what-is-an-article"><span class="esl-toc__num" aria-hidden="true">1</span><span class="esl-toc__label">What Is an Article?</span></a></div></li><li class="esl-toc__item esl-toc__item--h2"><div class="esl-toc__row"><a class="esl-toc__link" href="#different-types-of-articles"><span class="esl-toc__num" aria-hidden="true">2</span><span class="esl-toc__label">Different Types of Articles</span></a><button type="button" class="esl-toc__expand" aria-expanded="false" aria-label="Show subsections"></button></div><ul class="esl-toc__sub"><li class="esl-toc__item esl-toc__item--h3"><a class="esl-toc__link" href="#definite-article">Definite Article</a></li><li class="esl-toc__item esl-toc__item--h3"><a class="esl-toc__link" href="#indefinite-articles">Indefinite Articles</a></li></ul></li><li class="esl-toc__item esl-toc__item--h2"><div class="esl-toc__row"><a class="esl-toc__link" href="#rules-for-using-articles"><span class="esl-toc__num" aria-hidden="true">3</span><span class="esl-toc__label">Rules for Using Articles</span></a><button type="button" class="esl-toc__expand" aria-expanded="false" aria-label="Show subsections"></button></div><ul class="esl-toc__sub"><li class="esl-toc__item esl-toc__item--h3"><a class="esl-toc__link" href="#rule-1-article-choice-depends-on-sound">Rule #1: Article choice depends on sound</a></li><li class="esl-toc__item esl-toc__item--h3"><a class="esl-toc__link" href="#rule-2-articles-with-adjectives">Rule #2: Articles with adjectives</a></li><li class="esl-toc__item esl-toc__item--h3"><a class="esl-toc__link" href="#rule-3-uncountable-nouns">Rule #3: Uncountable nouns</a></li><li class="esl-toc__item esl-toc__item--h3"><a class="esl-toc__link" href="#rule-4-articles-and-possessive-pronouns">Rule #4: Articles and possessive pronouns</a></li><li class="esl-toc__item esl-toc__item--h3"><a class="esl-toc__link" href="#rule-5-when-articles-are-omitted">Rule #5: When articles are omitted</a></li></ul></li><li class="esl-toc__item esl-toc__item--h2"><div class="esl-toc__row"><a class="esl-toc__link" href="#when-not-to-use-an-english-article"><span class="esl-toc__num" aria-hidden="true">4</span><span class="esl-toc__label">
54When Not to Use an English Article</span></a></div></li><li class="esl-toc__item esl-toc__item--h2"><div class="esl-toc__row"><a class="esl-toc__link" href="#articles-with-countable-and-uncountable-nouns"><span class="esl-toc__num" aria-hidden="true">5</span><span class="esl-toc__label">Articles with Countable and Uncountable Nouns</span></a></div></li><li class="esl-toc__item esl-toc__item--h2"><div class="esl-toc__row"><a class="esl-toc__link" href="#how-to-use-articles-a-an-the-video"><span class="esl-toc__num" aria-hidden="true">6</span><span class="esl-toc__label">How to Use Articles (A / An / The) | Video</span></a></div></li></ul></nav></div><p>When studying English grammar, you may have come across <strong>articles</strong>. In this lesson, we will take a clear and structured look at what an article is, how it is used, and the rules surrounding it. The explanation is supported by examples and <a href="https://7esl.com/articles-worksheet/">exercises</a> so that you can gain a solid understanding of how articles function in real sentences.</p><h2 id="what-is-an-article">What Is an Article?</h2><p>In English grammar, there are two different types of articles: the <strong>definite article</strong> and the <strong>indefinite articles</strong>. In simple terms, an article tells the listener or reader whether a noun is <strong>specific</strong> or <strong>non-specific</strong>.</p><div class="mv-ads esl-ad-slot" data-slot="cat-landing" style="min-height:350px;margin:22px auto;max-width:340px;text-align:center;"></div><p>The three English articles are: <strong>a</strong>, <strong>an</strong>, and <strong>the</strong>.</p><p>Letâs look at some examples to clarify the meaning of an article.</p><ul><li><em>During <strong>the</strong> long journey, the family played car games.</em></li></ul><div class="mv-ads esl-ad-slot" data-slot="cat-landing" style="min-height:350px;margin:22px auto;max-width:340px;text-align:center;"></div><p>Here, the article <strong>the</strong> shows that we are talking about a <strong>specific</strong> journey and a <strong>specific</strong> family.</p><p>If we change the article, the meaning becomes more general:</p><ul><li><em>During <strong>a</strong> long journey, <strong>a</strong> family can play car games.</em></li></ul><div class="mv-ads esl-ad-slot" data-slot="cat-landing" style="min-height:350px;margin:22px auto;max-width:340px;text-align:center;"></div><p class="esl-adfree-nudge" style="max-width:340px;margin:-14px auto 22px;text-align:center;font-size:12px;line-height:1.5;color:#94a3b8;">Ads paying for your free English lessons. Prefer a quiet page? <a href="https://7esl.com/membership/?src=ad_slot" style="color:#64748b;text-decoration:underline;">Go ad-free</a></p><p>By changing the article, the sentence now refers to any journey or any family, not a particular one.</p><p><strong>Quick notes:</strong></p><ul><li>Articles are small but very important words in English.</li><li>Articles are considered adjectives because they modify nouns.</li><li>Articles always come before the nouns they describe.</li></ul><p><img loading="lazy" fetchpriority="high" decoding="async" class="alignnone wp-image-17620 size-full" src="https://7esl.com/wp-content/uploads/2018/01/Articles_-A2FAN2F-THE-1.jpg" alt="English articles a an the grammar rules and examples" width="2980" height="3089" title="Articles Landing 1" srcset="https://7esl.com/wp-content/uploads/2018/01/Articles_-A2FAN2F-THE-1.jpg 2980w, https://7esl.com/wp-content/uploads/2018/01/Articles_-A2FAN2F-THE-1-460x477.jpg 460w, https://7esl.com/wp-content/uploads/2018/01/Articles_-A2FAN2F-THE-1-768x796.jpg 768w, https://7esl.com/wp-content/uploads/2018/01/Articles_-A2FAN2F-THE-1-988x1024.jpg 988w, https://7esl.com/wp-content/uploads/2018/01/Articles_-A2FAN2F-THE-1-116x120.jpg 116w, https://7esl.com/wp-content/uploads/2018/01/Articles_-A2FAN2F-THE-1-310x321.jpg 310w" sizes="(max-width: 2980px) 100vw, 2980px" /></p><h2 id="different-types-of-articles">Different Types of Articles</h2><p>English has two types of articles, each with its own purpose:</p><ul><li><strong>Definite article:</strong> <em>the</em></li><li><strong>
54Indefinite articles:</strong> <em>a</em> and <em>an</em></li></ul><h3 id="definite-article">Definite Article</h3><p>The word <strong>the</strong> is called the definite article. It is used when the speaker is referring to something specific or something that is already known to the listener.</p><p>The definite article can be used with singular nouns, plural nouns, and uncountable nouns.</p><ul><li>Please show me <strong>the</strong> photo.</li><li>Can I see <strong>the</strong> blue dress? I do not like <strong>the</strong> red one.</li><li>Are we going to watch <strong>the</strong> football game?</li><li>I need <strong>the</strong> long wire; it is <strong>the</strong> only one that will reach the socket.</li></ul><h3 id="indefinite-articles">Indefinite Articles</h3><p>The indefinite articles are <strong>a</strong> and <strong>an</strong>. They are used when we are talking about something in a general or non-specific way.</p><p><strong>Important rule:</strong> The choice between <strong>a</strong> and <strong>an</strong> depends on the <strong>sound</strong> at the beginning of the word, not the letter.</p><ul><li>Use <strong>a</strong> before words that begin with a <strong>consonant sound</strong>.</li><li>Use <strong>an</strong> before words that begin with a <strong>vowel sound</strong>.</li></ul><p>Examples:</p><ul><li>I need to read <strong>a</strong> book.</li><li>I am going to watch <strong>a</strong> movie.</li><li>There is <strong>an</strong> animal in the garden.</li><li>Sally has <strong>an</strong> invention she is working on.</li></ul><h2 id="rules-for-using-articles">Rules for Using Articles</h2><h3 id="rule-1-article-choice-depends-on-sound">Rule #1: Article choice depends on sound</h3><p>Some words begin with a consonant letter but have a vowel sound, or vice versa.</p><ul><li><em>It is <strong>an</strong> honour to meet the Queen.</em> (The âhâ is silent.)</li><li><em>He is <strong>a</strong> United Nations representative.</em>
54 (âUnitedâ begins with a /j/ sound.)</li><li><em>She is <strong>a</strong> university student.</em></li></ul><h3 id="rule-2-articles-with-adjectives">Rule #2: Articles with adjectives</h3><p>When a noun is modified by an adjective, the article is chosen based on the <strong>adjectiveâs sound</strong>, not the noun.</p><ul><li><em>The <strong>Inuit</strong> people traditionally lived in <strong>a</strong> large igloo.</em></li><li><em>Last week I read <strong>an</strong> amazing book.</em></li></ul><h3 id="rule-3-uncountable-nouns">Rule #3: Uncountable nouns</h3><p>Uncountable nouns cannot be used with <strong>a</strong> or <strong>an</strong>.</p><p>Incorrect:</p><ul><li><em>Please give the dog <strong>a</strong> water.</em></li></ul><p>Correct alternatives:</p><ul><li><em>Please give the dog <strong>some</strong> water.</em></li><li><em>Please give the dog <strong>a bowl of</strong> water.</em></li></ul><h3 id="rule-4-articles-and-possessive-pronouns">Rule #4: Articles and possessive pronouns</h3><p>Articles are not used together with possessive pronouns.</p><p>Incorrect:</p><ul><li><em>Have you got <strong>the</strong> my coat?</em></li></ul><p>Correct:</p><ul><li><em>Have you got my coat?</em></li></ul><h3 id="rule-5-when-articles-are-omitted">Rule #5: When articles are omitted</h3><p>Sometimes, no article is needed:</p><ul><li><em>I like to play football.</em></li><li><em>She has breakfast at 7 a.m.</em></li></ul><h2 id="when-not-to-use-an-english-article">When Not to Use an English Article</h2><ol><li>When talking about things in general.</li><li>Before the names of sports and games.</li><li>Before most country names (except the UK, the USA, the Netherlands).</li><li>Before the names of languages.</li><li>Before meals when speaking generally.</li><li>Before noun + number combinations.</li></ol><h2 id="articles-with-countable-and-uncountable-nouns">Articles with Countable and Uncountable Nouns</h2><p>To choose the correct article, you must decide whether a noun is <strong>countable</strong> or <strong>uncountable</strong>.</p><p><strong>Countable nouns:</strong></p><p><em>an apple, a school, one picture, two pictures, three men</em></p><p><strong>Uncountable nouns:</strong></p><p><em>information, water, understanding, wood, cheese</em></p><h2 id="how-to-use-articles-a-an-the-video">How to Use Articles (A / An / The) | Video</h2><div class="embed-container"><iframe loading="lazy" src="https://www.youtube.com/embed/TulY-6VR2sE" frameborder="0" allowfullscreen="allowfullscreen"><br /> </iframe></div><p>Articles are a fundamental part of English grammar. Their correct use depends on the noun they modify and, in many cases, on the sound that follows the article. With practice, these rules become natural and easy to apply.</p></div><section id="esl-panel-test" class="esl-tab-panel esl-mini-quiz-section" 55aria-label="Practice quiz â knowledge check" 56data-test-id="894"><div class="esl-test-wrap" id="esl-mini-wrap-894"><div class="esl-test-header"><div class="esl-test-header__meta"> <span class="esl-badge-diff">mixed</span> <span class="esl-badge-type">Knowledge Check · 5 questions</span></div><h2 style="margin:0 0 4px;font-size:clamp(16px,2.5vw,20px);font-weight:700;color:#fff;line-height:1.3"> Articles Practice Quiz (A1-B2)</h2></div><div class="esl-test-progress-bar"><div class="esl-progress-track"><div class="esl-progress-fill" id="esl-mini-fill-894" 57style="width:20%"></div></div> <span class="esl-progress-label" id="esl-mini-label-894">1 / 5</span></div><div class="esl-test-body"><section class="esl-question-block esl-active" 58id="mini-question-894-1" 59aria-label="Question 1 of 5" 60data-qid="9367" 61data-type="mcq" 62><div class="esl-question-num">Q1</div><h3 class="esl-question-heading">Question 1: I have ___ cat.</h3><fieldset><legend class="esl-sr-only">Question 1 options</legend><div class="esl-options" role="radiogroup"><div class="esl-option" 63data-aid="37403" 64data-correct="1" 65> <input type="radio" id="mini-q9367-opt0" name="mini-q9367" value="37403" class="esl-sr-only"> <label for="mini-q9367-opt0"> <span class="esl-option-letter">A</span> <span class="esl-option-text">a</span> </label></div><div class="esl-option" 66data-aid="37404" 67data-correct="0" 68> <input type="radio" id="mini-q9367-opt1" name="mini-q9367" value="37404" class="esl-sr-only"> <label for="mini-q9367-opt1"> <span class="esl-option-letter">B</span> <span class="esl-option-text">the</span> </label></div><div class="esl-option" 69data-aid="37405" 70data-correct="0" 71> <input type="radio" id="mini-q9367-opt2" name="mini-q9367" value="37405" class="esl-sr-only"> <label for="mini-q9367-opt2"> <span class="esl-option-letter">C</span> <span class="esl-option-text">an</span> </label></div><div class="esl-option" 72data-aid="37406" 73data-correct="0" 74> <input type="radio" id="mini-q9367-opt3" name="mini-q9367" value="37406" class="esl-sr-only"> <label for="mini-q9367-opt3"> <span class="esl-option-letter">D</span> <span class="esl-option-text">some</span> </label></div></div><div class="esl-check-row"> <button class="esl-check-btn" data-qid="9367" type="button"> Check answer </button></div><div class="esl-question-feedback" id="esl-mini-fb-9367" 75aria-live="polite" role="status"> <span class="esl-fb-icon"></span> <span class="esl-fb-text"></span><div class="esl-fb-exp">"a" is correct because we use the indefinite article "a" before a singular countable noun starting with a consonant sound when mentioning it for the first time. "An" is used before vowel sounds, "the" implies a specific cat already known, and "some" is used with plural or uncountable nouns.</div></div><div class="esl-report-wrap" style="margin-top:12px;border-top:1px solid #f1f5f9;padding-top:10px"> <button type="button" class="esl-report-toggle-btn" style="background:none;border:none;color:#64748b;font-size:12px;cursor:pointer;padding:4px 0;display:flex;align-items:center;gap:6px;font-family:inherit;text-decoration:none" 76data-qid="9367" 77data-testid="894" 78data-testtype="post_lesson" 79data-testlevel="mixed"> <span style="font-size:14px">ð©</span> Found a problem with this question? </button><div class="esl-report-form-wrap" style="display:none"><div style="font-size:13px;font-weight:700;color:#0f172a;margin-bottom:10px">Report an issue with this question</div> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Issue type <span style="color:#dc2626">*</span></label> <select class="esl-rep-type" style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;margin-bottom:10px;background:#fff;font-family:inherit"><option value="">â Select issue type â</option><option value="wrong_answer">Wrong answer marked as correct</option><option value="multiple_correct">More than one correct answer</option><option value="unclear">Question is unclear or ambiguous</option><option value="grammar_spelling">Grammar / spelling issue</option><option value="wrong_explanation">Explanation is incorrect</option><option value="technical">Technical / display issue</option><option value="other">Other</option> </select> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Description <small style="font-weight:400">(optional)</small></label><textarea class="esl-rep-desc" placeholder="Briefly describe the problemâ¦" rows="2" 80 style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;box-sizing:border-box;margin-bottom:10px"></textarea><label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Email <small style="font-weight:400">
80(optional, for reply)</small></label> <input type="email" class="esl-rep-email" placeholder="[email protected]" 81style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;box-sizing:border-box;margin-bottom:12px;font-family:inherit"><div style="display:flex;gap:8px;align-items:center"> <button type="button" class="esl-rep-submit-btn" 82style="padding:9px 18px;background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit"> Submit Report </button> <button type="button" class="esl-rep-cancel-btn" 83style="padding:9px 14px;background:#f1f5f9;color:#475569;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit"> Cancel </button></div><div class="esl-rep-msg" style="margin-top:8px;font-size:13px"></div></div></div></fieldset></section><section class="esl-question-block" 84id="mini-question-894-2" 85aria-label="Question 2 of 5" 86data-qid="9371" 87data-type="true_false" 88><div class="esl-question-num">Q2</div><h3 class="esl-question-heading">Question 2: We use "an" before the word "university" because it starts with the letter "u."</h3><fieldset><legend class="esl-sr-only">Question 2 options</legend><div class="esl-options" role="radiogroup"><div class="esl-option" 89data-aid="37416" 90data-correct="0" 91> <input type="radio" id="mini-q9371-opt0" name="mini-q9371" value="37416" class="esl-sr-only"> <label for="mini-q9371-opt0"> <span class="esl-option-letter">A</span> <span class="esl-option-text">True</span> </label></div><div class="esl-option" 92data-aid="37417" 93data-correct="1" 94> <input type="radio" id="mini-q9371-opt1" name="mini-q9371" value="37417" class="esl-sr-only"> <label for="mini-q9371-opt1"> <span class="esl-option-letter">B</span> <span class="esl-option-text">False</span> </label></div></div><div class="esl-check-row"> <button class="esl-check-btn" data-qid="9371" type="button"> Check answer </button></div><div class="esl-question-feedback" id="esl-mini-fb-9371" 95aria-live="polite" role="status"> <span class="esl-fb-icon"></span> <span class="esl-fb-text"></span><div class="esl-fb-exp">False because the choice between "a" and "an" depends on the sound, not the letter. "University" begins with the consonant sound /juË/, so we say "a university," not "an university."</div></div><div class="esl-report-wrap" style="margin-top:12px;border-top:1px solid #f1f5f9;padding-top:10px"> <button type="button" class="esl-report-toggle-btn" style="background:none;border:none;color:#64748b;font-size:12px;cursor:pointer;padding:4px 0;display:flex;align-items:center;gap:6px;font-family:inherit;text-decoration:none" 96data-qid="9371" 97data-testid="894" 98data-testtype="post_lesson" 99data-testlevel="mixed"> <span style="font-size:14px">ð©</span> Found a problem with this question? </button><div class="esl-report-form-wrap" style="display:none"><div style="font-size:13px;font-weight:700;color:#0f172a;margin-bottom:10px">Report an issue with this question</div> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Issue type <span style="color:#dc2626">*</span></label> <select class="esl-rep-type" style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;margin-bottom:10px;background:#fff;font-family:inherit"><option value="">â Select issue type â</option><option value="wrong_answer">Wrong answer marked as correct</option><option value="multiple_correct">More than one correct answer</option><option value="unclear">Question is unclear or ambiguous</option><option value="grammar_spelling">Grammar / spelling issue</option><option value="wrong_explanation">Explanation is incorrect</option><option value="technical">Technical / display issue</option><option value="other">Other</option> </select> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Description <small style="font-weight:400">(optional)</small></label><textarea class="esl-rep-desc" placeholder="Briefly describe the problemâ¦" rows="2" 100 style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;box-sizing:border-box;margin-bottom:10px"></textarea><label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Email <small style="font-weight:400">
100(optional, for reply)</small></label> <input type="email" class="esl-rep-email" placeholder="[email protected]" 101style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;box-sizing:border-box;margin-bottom:12px;font-family:inherit"><div style="display:flex;gap:8px;align-items:center"> <button type="button" class="esl-rep-submit-btn" 102style="padding:9px 18px;background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit"> Submit Report </button> <button type="button" class="esl-rep-cancel-btn" 103style="padding:9px 14px;background:#f1f5f9;color:#475569;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit"> Cancel </button></div><div class="esl-rep-msg" style="margin-top:8px;font-size:13px"></div></div></div></fieldset></section><section class="esl-question-block" 104id="mini-question-894-3" 105aria-label="Question 3 of 5" 106data-qid="9375" 107data-type="ordering" 108><div class="esl-question-num">Q3</div><h3 class="esl-question-heading">Question 3: Put these words in the correct order to form a sentence:</h3><fieldset><legend class="esl-sr-only">Question 3 options</legend><ul class="esl-order-list" role="group" id="order-9375"><li class="esl-order-item" data-aid="37431" data-pos="2" draggable="true"> <span class="esl-order-handle"></span> <span class="esl-order-text">plays</span> <span class="esl-order-num"></span> <span class="esl-order-arrows"><button type="button" class="esl-order-arrow esl-order-up" aria-label="Move up">â²</button><button type="button" class="esl-order-arrow esl-order-down" aria-label="Move down">â¼</button></span></li><li class="esl-order-item" data-aid="37432" data-pos="3" draggable="true"> <span class="esl-order-handle"></span> <span class="esl-order-text">the piano</span> <span class="esl-order-num"></span> <span class="esl-order-arrows"><button type="button" class="esl-order-arrow esl-order-up" aria-label="Move up">â²</button><button type="button" class="esl-order-arrow esl-order-down" aria-label="Move down">â¼</button></span></li><li class="esl-order-item" data-aid="37433" data-pos="4" draggable="true"> <span class="esl-order-handle"></span> <span class="esl-order-text">beautifully</span> <span class="esl-order-num"></span> <span class="esl-order-arrows"><button type="button" class="esl-order-arrow esl-order-up" aria-label="Move up">â²</button><button type="button" class="esl-order-arrow esl-order-down" aria-label="Move down">â¼</button></span></li><li class="esl-order-item" data-aid="37430" data-pos="1" draggable="true"> <span class="esl-order-handle"></span> <span class="esl-order-text">She</span> <span class="esl-order-num"></span> <span class="esl-order-arrows"><button type="button" class="esl-order-arrow esl-order-up" aria-label="Move up">â²</button><button type="button" class="esl-order-arrow esl-order-down" aria-label="Move down">â¼</button></span></li></ul><p class="esl-q-hint">Drag items or use arrows to arrange them in the correct order.</p><div class="esl-check-row"> <button class="esl-check-btn" data-qid="9375" type="button"> Check answer </button></div><div class="esl-question-feedback" id="esl-mini-fb-9375" 109aria-live="polite" role="status"> <span class="esl-fb-icon"></span> <span class="esl-fb-text"></span><div class="esl-fb-exp">The correct order is "She plays the piano beautifully" because musical instruments require the definite article "the" (e.g., play the piano, play the guitar).</div></div><div class="esl-report-wrap" style="margin-top:12px;border-top:1px solid #f1f5f9;padding-top:10px"> <button type="button" class="esl-report-toggle-btn" style="background:none;border:none;color:#64748b;font-size:12px;cursor:pointer;padding:4px 0;display:flex;align-items:center;gap:6px;font-family:inherit;text-decoration:none" 110data-qid="9375" 111data-testid="894" 112data-testtype="post_lesson" 113data-testlevel="mixed"> <span style="font-size:14px">ð©</span> Found a problem with this question? </button><div class="esl-report-form-wrap" style="display:none"><div style="font-size:13px;font-weight:700;color:#0f172a;margin-bottom:10px">Report an issue with this question</div> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Issue type <span style="color:#dc2626">*</span></label> <select class="esl-rep-type" style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;margin-bottom:10px;background:#fff;font-family:inherit"><option value="">â Select issue type â</option><option value="wrong_answer">Wrong answer marked as correct</option><option value="multiple_correct">More than one correct answer</option><option value="unclear">Question is unclear or ambiguous</option><option value="grammar_spelling">Grammar / spelling issue</option><option value="wrong_explanation">Explanation is incorrect</option><option value="technical">Technical / display issue</option><option value="other">Other</option> </select> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Description <small style="font-weight:400">(optional)</small></label><textarea class="esl-rep-desc" placeholder="Briefly describe the problemâ¦" rows="2" 114 style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;box-sizing:border-box;margin-bottom:10px"></textarea><label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Email <small style="font-weight:400">
114(optional, for reply)</small></label> <input type="email" class="esl-rep-email" placeholder="[email protected]" 115style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;box-sizing:border-box;margin-bottom:12px;font-family:inherit"><div style="display:flex;gap:8px;align-items:center"> <button type="button" class="esl-rep-submit-btn" 116style="padding:9px 18px;background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit"> Submit Report </button> <button type="button" class="esl-rep-cancel-btn" 117style="padding:9px 14px;background:#f1f5f9;color:#475569;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit"> Cancel </button></div><div class="esl-rep-msg" style="margin-top:8px;font-size:13px"></div></div></div></fieldset></section><section class="esl-question-block" 118id="mini-question-894-4" 119aria-label="Question 4 of 5" 120data-qid="9379" 121data-type="matching" 122><div class="esl-question-num">Q4</div><h3 class="esl-question-heading">Question 4: Match each phrase to the correct article rule.</h3><fieldset><legend class="esl-sr-only">Question 4 options</legend><div class="esl-match-wrap" role="group" id="match-9379"><div class="esl-match-col esl-match-col--left"></div><div class="esl-match-col esl-match-col--arrows" id="arrows-9379"></div><div class="esl-match-col esl-match-col--right"></div></div><p class="esl-q-hint">Select an item on the left, then tap its match on the right.</p> <input type="hidden" class="esl-match-answer" data-qid="9379"><div class="esl-check-row"> <button class="esl-check-btn" data-qid="9379" type="button"> Check answer </button></div><div class="esl-question-feedback" id="esl-mini-fb-9379" 123aria-live="polite" role="status"> <span class="esl-fb-icon"></span> <span class="esl-fb-text"></span><div class="esl-fb-exp">{""content"": ""Zero article with languages""</div></div><div class="esl-report-wrap" style="margin-top:12px;border-top:1px solid #f1f5f9;padding-top:10px"> <button type="button" class="esl-report-toggle-btn" style="background:none;border:none;color:#64748b;font-size:12px;cursor:pointer;padding:4px 0;display:flex;align-items:center;gap:6px;font-family:inherit;text-decoration:none" 124data-qid="9379" 125data-testid="894" 126data-testtype="post_lesson" 127data-testlevel="mixed"> <span style="font-size:14px">ð©</span> Found a problem with this question? </button><div class="esl-report-form-wrap" style="display:none"><div style="font-size:13px;font-weight:700;color:#0f172a;margin-bottom:10px">Report an issue with this question</div> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Issue type <span style="color:#dc2626">*</span></label> <select class="esl-rep-type" style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;margin-bottom:10px;background:#fff;font-family:inherit"><option value="">â Select issue type â</option><option value="wrong_answer">Wrong answer marked as correct</option><option value="multiple_correct">More than one correct answer</option><option value="unclear">Question is unclear or ambiguous</option><option value="grammar_spelling">Grammar / spelling issue</option><option value="wrong_explanation">Explanation is incorrect</option><option value="technical">Technical / display issue</option><option value="other">Other</option> </select> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Description <small style="font-weight:400">(optional)</small></label><textarea class="esl-rep-desc" placeholder="Briefly describe the problemâ¦" rows="2" 128 style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;box-sizing:border-box;margin-bottom:10px"></textarea><label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Email <small style="font-weight:400">
128(optional, for reply)</small></label> <input type="email" class="esl-rep-email" placeholder="[email protected]" 129style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;box-sizing:border-box;margin-bottom:12px;font-family:inherit"><div style="display:flex;gap:8px;align-items:center"> <button type="button" class="esl-rep-submit-btn" 130style="padding:9px 18px;background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit"> Submit Report </button> <button type="button" class="esl-rep-cancel-btn" 131style="padding:9px 14px;background:#f1f5f9;color:#475569;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit"> Cancel </button></div><div class="esl-rep-msg" style="margin-top:8px;font-size:13px"></div></div></div></fieldset></section><section class="esl-question-block" 132id="mini-question-894-5" 133aria-label="Question 5 of 5" 134data-qid="9383" 135data-type="mcq" 136><div class="esl-question-num">Q5</div><h3 class="esl-question-heading">Question 5: She gave me ___ useful piece of advice about my career.</h3><fieldset><legend class="esl-sr-only">Question 5 options</legend><div class="esl-options" role="radiogroup"><div class="esl-option" 137data-aid="37453" 138data-correct="1" 139> <input type="radio" id="mini-q9383-opt0" name="mini-q9383" value="37453" class="esl-sr-only"> <label for="mini-q9383-opt0"> <span class="esl-option-letter">A</span> <span class="esl-option-text">a</span> </label></div><div class="esl-option" 140data-aid="37454" 141data-correct="0" 142> <input type="radio" id="mini-q9383-opt1" name="mini-q9383" value="37454" class="esl-sr-only"> <label for="mini-q9383-opt1"> <span class="esl-option-letter">B</span> <span class="esl-option-text">an</span> </label></div><div class="esl-option" 143data-aid="37455" 144data-correct="0" 145> <input type="radio" id="mini-q9383-opt2" name="mini-q9383" value="37455" class="esl-sr-only"> <label for="mini-q9383-opt2"> <span class="esl-option-letter">C</span> <span class="esl-option-text">no article</span> </label></div><div class="esl-option" 146data-aid="37456" 147data-correct="0" 148> <input type="radio" id="mini-q9383-opt3" name="mini-q9383" value="37456" class="esl-sr-only"> <label for="mini-q9383-opt3"> <span class="esl-option-letter">D</span> <span class="esl-option-text">the</span> </label></div></div><div class="esl-check-row"> <button class="esl-check-btn" data-qid="9383" type="button"> Check answer </button></div><div class="esl-question-feedback" id="esl-mini-fb-9383" 149aria-live="polite" role="status"> <span class="esl-fb-icon"></span> <span class="esl-fb-text"></span><div class="esl-fb-exp">"a" is correct because "useful" begins with the consonant sound /juË/, not a vowel sound, so we use "a" rather than "an." "The" would require prior mention or shared knowledge of this advice. "No article" is ungrammatical before a singular countable noun like "piece."</div></div><div class="esl-report-wrap" style="margin-top:12px;border-top:1px solid #f1f5f9;padding-top:10px"> <button type="button" class="esl-report-toggle-btn" style="background:none;border:none;color:#64748b;font-size:12px;cursor:pointer;padding:4px 0;display:flex;align-items:center;gap:6px;font-family:inherit;text-decoration:none" 150data-qid="9383" 151data-testid="894" 152data-testtype="post_lesson" 153data-testlevel="mixed"> <span style="font-size:14px">ð©</span> Found a problem with this question? </button><div class="esl-report-form-wrap" style="display:none"><div style="font-size:13px;font-weight:700;color:#0f172a;margin-bottom:10px">Report an issue with this question</div> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Issue type <span style="color:#dc2626">*</span></label> <select class="esl-rep-type" style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;margin-bottom:10px;background:#fff;font-family:inherit"><option value="">â Select issue type â</option><option value="wrong_answer">Wrong answer marked as correct</option><option value="multiple_correct">More than one correct answer</option><option value="unclear">Question is unclear or ambiguous</option><option value="grammar_spelling">Grammar / spelling issue</option><option value="wrong_explanation">Explanation is incorrect</option><option value="technical">Technical / display issue</option><option value="other">Other</option> </select> <label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Description <small style="font-weight:400">(optional)</small></label><textarea class="esl-rep-desc" placeholder="Briefly describe the problemâ¦" rows="2" 154 style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;resize:vertical;box-sizing:border-box;margin-bottom:10px"></textarea><label style="font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:4px">Email <small style="font-weight:400">
154(optional, for reply)</small></label> <input type="email" class="esl-rep-email" placeholder="[email protected]" 155style="width:100%;padding:8px 10px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:13px;box-sizing:border-box;margin-bottom:12px;font-family:inherit"><div style="display:flex;gap:8px;align-items:center"> <button type="button" class="esl-rep-submit-btn" 156style="padding:9px 18px;background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit"> Submit Report </button> <button type="button" class="esl-rep-cancel-btn" 157style="padding:9px 14px;background:#f1f5f9;color:#475569;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit"> Cancel </button></div><div class="esl-rep-msg" style="margin-top:8px;font-size:13px"></div></div></div></fieldset></section></div><div class="esl-test-nav"> <button class="esl-btn esl-btn-ghost" id="esl-mini-prev-894" 158type="button" style="visibility:hidden">â Back</button> <button class="esl-btn esl-btn-primary" id="esl-mini-next-894" 159type="button">Next â</button> <button class="esl-btn esl-btn-submit" id="esl-mini-submit-894" 160type="button" style="display:none" 161data-test-id="894" 162data-logged-in="0"> Submit â </button></div></div></section>
162<script id="esl-mini-driver-894">(function(){ 163 var REST = 'https://7esl.com/wp-json/esl/v1/'; 164 var NONCE = 'cd616dd652'; 165 var TESTID = 894; 166 var TOTAL = 5; 167 var FULLCOUNT= 20; 168 var FULLURL = 'https://7esl.com/practice/grammar/articles-test/'; 169 var LOGGED = 0 === 1; 170 var PURL = 'https://7esl.com/profile/'; 171 /* v1.9.29 (C4) â chuyên mục cá»§a chÃnh bà i nà y, dùng khi không có viá»c 172 tiếp theo riêng cho ngưá»i Äang xem. Xem khá»i chú thÃch á» Äầu file. */ 173 var CATNAME = ''; 174 var CATURL = ''; 175 var MINI_XP_MAX = 5; // fixed max = 5 XP 176 var FULL_TEST_XP = 22; // full test DB xp_reward 177 var PID = 894; 178 179 var current = 0, answers = {}, checked = 0, correct_count = 0; 180 var started = Date.now(); 181 182 var panel = document.getElementById('esl-panel-test'); 183 var wrap = document.getElementById('esl-mini-wrap-'+PID); 184 var btnPrev = document.getElementById('esl-mini-prev-'+PID); 185 var btnNext = document.getElementById('esl-mini-next-'+PID); 186 var btnSub = document.getElementById('esl-mini-submit-'+PID); 187 var fill = document.getElementById('esl-mini-fill-'+PID); 188 var lbl = document.getElementById('esl-mini-label-'+PID); 189 var blocks = Array.from(panel.querySelectorAll('.esl-question-block')); 190 191 function showBlock(n){ 192 blocks.forEach(function(b,i){ b.classList.toggle('esl-active', i===n); }); 193 if(fill) fill.style.width = Math.round((n+1)/TOTAL*100)+'%'; 194 if(lbl) lbl.textContent = (n+1)+' / '+TOTAL; 195 btnPrev.style.visibility = n===0 ? 'hidden' : 'visible'; 196 btnNext.style.display = n===TOTAL-1 ? 'none' : ''; 197 if(n===TOTAL-1 && checked>0) btnSub.style.display=''; 198 } 199 200 btnPrev.addEventListener('click', function(){ if(current>0){ current--; showBlock(current); }}); 201 btnNext.addEventListener('click', function(){ 202 if(current<TOTAL-1){ current++; showBlock(current); 203 if(current===TOTAL-1 && checked>0) btnSub.style.display=''; 204 } 205 }); 206 btnSub.addEventListener('click', doSubmit); 207 208 /* Option click */ 209 panel.addEventListener('click', function(e){ 210 var opt = e.target.closest('.esl-option'); 211 if(opt){ 212 var block = opt.closest('.esl-question-block'); 213 if(!block || block.classList.contains('esl-checked')) return; 214 block.querySelectorAll('.esl-option').forEach(function(o){ 215 o.classList.remove('esl-selected'); 216 var r = o.querySelector('input[type="radio"]'); if(r) r.checked = false; 217 }); 218 opt.classList.add('esl-selected'); 219 var radio = opt.querySelector('input[type="radio"]'); if(radio) radio.checked = true; 220 answers[block.dataset.qid] = opt.dataset.aid; 221 return; 222 } 223 224 /* ââ Matching ââ */ 225 var matchItem = e.target.closest('.esl-match-item'); 226 if(matchItem){ 227 var block = matchItem.closest('.esl-question-block'); 228 if(!block || block.classList.contains('esl-checked')) return; 229 var side = matchItem.getAttribute('data-side'); 230 var wrap = block.querySelector('.esl-match-wrap'); 231 if(side === 'left'){ 232 wrap.querySelectorAll('.esl-match-item[data-side="left"]').forEach(function(i){ i.classList.remove('esl-match-active'); }); 233 matchItem.classList.toggle('esl-match-active', !matchItem.classList.contains('esl-match-active')); 234 } else { 235 var selLeft = wrap.querySelector('.esl-match-item[data-side="left"].esl-match-active'); 236 if(!selLeft) return; 237 // Remove stale pairings 238 wrap.querySelectorAll('.esl-match-item[data-side="left"]').forEach(function(l){ 239 if(l.getAttribute('data-matched') === matchItem.getAttribute('data-aid')) l.removeAttribute('data-matched'); 240 }); 241 selLeft.setAttribute('data-matched', matchItem.getAttribute('data-aid')); 242 selLeft.classList.remove('esl-match-active'); 243 // Sync paired visual 244 wrap.querySelectorAll('.esl-match-item[data-side="left"]').forEach(function(l){ 245 l.classList.toggle('esl-match-paired', !!l.getAttribute('data-matched')); 246 }); 247 var pairedRids = []; 248 wrap.querySelectorAll('.esl-match-item[data-side="left"]').forEach(function(l){ 249 if(l.getAttribute('data-matched')) pairedRids.push(l.getAttribute('data-matched')); 250 }); 251 wrap.querySelectorAll('.esl-match-item[data-side="right"]').forEach(function(r){ 252 r.classList.toggle('esl-match-paired', pairedRids.indexOf(r.getAttribute('data-aid')) !== -1); 253 }); 254 // Build answer map {leftAid: rightAid} 255 var ansMap = {}; 256 wrap.querySelectorAll('.esl-match-item[data-side="left"]').forEach(function(l){ 257 if(l.getAttribute('data-matched')) ansMap[l.getAttribute('data-aid')] = l.getAttribute('data-matched'); 258 }); 259 answers[block.dataset.qid] = ansMap; 260 } 261 return; 262 } 263 264 /* ââ Sentence building ââ */ 265 var chip = e.target.closest('.esl-word-chip'); 266 if(chip){ 267 var block = chip.closest('.esl-question-block'); 268 if(!block || block.classList.contains('esl-checked')) return; 269 var sbAns = block.querySelector('.esl-sentence-answer'); 270 var sbBank = block.querySelector('.esl-sentence-bank'); 271 if(chip.classList.contains('esl-word-in-answer')){ 272 // Return to bank 273 chip.remove(); 274 var orig = sbBank.querySelector('[data-aid="'+chip.getAttribute('data-aid')+'"].esl-word-used'); 275 if(!orig) orig = sbBank.querySelector('[data-aid="'+chip.getAttribute('data-aid')+'"]'); 276 if(orig) orig.style.opacity=''; orig && (orig.style.pointerEvents=''); 277 if(!sbAns.querySelector('.esl-word-chip')){ 278 var ph = document.createElement('span'); 279 ph.className = 'esl-sentence-placeholder';
280 ph.textContent = 'Tap words below to build the sentence'; 281 sbAns.appendChild(ph); 282 } 283 } else { 284 // Add to answer 285 if(chip.style.opacity === '0.3' || chip.style.opacity === '.3') return; 286 chip.style.opacity = '0.3'; 287 chip.style.pointerEvents = 'none'; 288 var ansChip = document.createElement('span'); 289 ansChip.className = 'esl-word-chip esl-word-in-answer'; 290 ansChip.setAttribute('data-aid', chip.getAttribute('data-aid')); 291 ansChip.textContent = chip.textContent; 292 // Styled via CSS class esl-word-in-answer 293 var ph = sbAns.querySelector('.esl-sentence-placeholder'); 294 if(ph) ph.remove(); 295 sbAns.appendChild(ansChip); 296 sbAns.style.borderColor = '#27a9cb'; 297 sbAns.style.background = 'rgba(39,169,203,.04)'; 298 } 299 answers[block.dataset.qid] = Array.from(sbAns.querySelectorAll('.esl-word-chip')).map(function(c){ return c.getAttribute('data-aid'); }); 300 return; 301 } 302 303 var cb = e.target.closest('.esl-check-btn'); 304 if(cb){ doCheck(cb); return; } 305 306 /* ââ Bug Report ââ */ 307 var repToggle = e.target.closest('.esl-report-toggle-btn'); 308 if (repToggle) { 309 var fw = repToggle.nextElementSibling; 310 if (fw && fw.classList.contains('esl-report-form-wrap')) { 311 var isHidden = fw.style.display === 'none'; 312 fw.style.display = isHidden ? 'block' : 'none'; 313 if (isHidden) { var s = fw.querySelector('.esl-rep-type'); if(s) s.focus(); } 314 } 315 return; 316 } 317 var repCancel = e.target.closest('.esl-rep-cancel-btn'); 318 if (repCancel) { 319 var fw = repCancel.closest('.esl-report-form-wrap'); 320 if (fw) fw.style.display = 'none'; 321 return; 322 } 323 var repSubmit = e.target.closest('.esl-rep-submit-btn'); 324 if (repSubmit) { 325 var fw = repSubmit.closest('.esl-report-form-wrap'); 326 var repWrap = repSubmit.closest('.esl-report-wrap'); 327 var tog = repWrap ? repWrap.querySelector('.esl-report-toggle-btn') : null; 328 var qid2 = tog ? (tog.getAttribute('data-qid') || '') : ''; 329 var ttype2= tog ? (tog.getAttribute('data-testtype') || '') : ''; 330 var tlvl2 = tog ? (tog.getAttribute('data-testlevel') || '') : ''; 331 var typeEl2 = fw.querySelector('.esl-rep-type'); 332 var descEl2 = fw.querySelector('.esl-rep-desc'); 333 var emailEl2 = fw.querySelector('.esl-rep-email'); 334 var msgEl2 = fw.querySelector('.esl-rep-msg'); 335 if (!typeEl2.value) { 336 msgEl2.innerHTML = '<span style="color:#dc2626">\u26A0\uFE0F Please select an issue type.</span>'; 337 typeEl2.style.borderColor = '#dc2626'; return; 338 } 339 typeEl2.style.borderColor = '#e2e8f0'; 340 var userAns2 = answers[qid2] !== undefined ? JSON.stringify(answers[qid2]) : ''; 341 repSubmit.disabled = true; repSubmit.textContent = 'Sending\u2026'; 342 msgEl2.innerHTML = ''; 343 fetch(REST + 'questions/' + qid2 + '/report', { 344 method: 'POST', 345 headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': NONCE }, 346 credentials: 'include', 347 body: JSON.stringify({ 348 report_type: typeEl2.value, description: descEl2.value, 349 email: emailEl2.value, user_answer: userAns2, correct_answer: '', 350 page_url: window.location.href, test_type: ttype2, test_level: tlvl2 351 }) 352 }).then(function(r){ return r.json(); }).then(function(j){ 353 if (j.success) { 354 msgEl2.innerHTML = '<span style="color:#16a34a">\u2713 Thanks! We\'ll review this question soon.</span>'; 355 repSubmit.textContent = 'Sent \u2713'; repSubmit.style.background = '#16a34a'; 356 typeEl2.value=''; descEl2.value=''; emailEl2.value=''; 357 setTimeout(function(){ fw.style.display='none'; }, 2800); 358 } else { 359 msgEl2.innerHTML = '<span style="color:#dc2626">\u26A0\uFE0F '+(j.message||'Failed.')+'</span>'; 360 repSubmit.disabled=false; repSubmit.textContent='Submit Report'; 361 } 362 }).catch(function(){ 363 msgEl2.innerHTML = '<span style="color:#dc2626">\u26A0\uFE0F Network error.</span>'; 364 repSubmit.disabled=false; repSubmit.textContent='Submit Report'; 365 }); 366 return; 367 } 368 }); 369 370 /* ââ Ordering drag-drop ââ */ 371 panel.addEventListener('dragstart', function(e){ 372 var item = e.target.closest('.esl-order-item'); 373 if(!item) return; 374 var block = item.closest('.esl-question-block'); 375 if(block && block.classList.contains('esl-checked')) { e.preventDefault(); return; } 376 e.dataTransfer.effectAllowed = 'move'; 377 e.dataTransfer.setData('text/plain', item.getAttribute('data-aid')); 378 setTimeout(function(){ item.classList.add('esl-order-dragging'); }, 0); 379 }); 380 panel.addEventListener('dragend', function(e){ 381 var item = e.target.closest('.esl-order-item'); 382 if(item) item.classList.remove('esl-order-dragging'); 383 panel.querySelectorAll('.esl-order-item').forEach(function(i){ i.classList.remove('esl-order-over'); }); 384 }); 385 panel.addEventListener('dragover', function(e){ 386 var item = e.target.closest('.esl-order-item'); 387 if(!item) return; 388 e.preventDefault(); 389 panel.querySelectorAll('.esl-order-item').forEach(function(i){ i.classList.remove('esl-order-over'); }); 390 item.classList.add('esl-order-over'); 391 }); 392 panel.addEventListener('drop', function(e){ 393 var target = e.target.closest('.esl-order-item'); 394 if(!target) return; 395 e.preventDefault(); 396 var fromId = e.dataTransfer.getData('text/plain'); 397 var list = target.closest('.esl-order-list'); 398 var fromEl = list ? list.querySelector('[data-aid="'+fromId+'"]') : null; 399 if(!fromEl || fromEl === target) return; 400 var items = Array.from(list.children); 401 var fi = items.indexOf(fromEl), ti = items.indexOf(target); 402 list.insertBefore(fromEl, fi < ti ? target.nextSibling : target); 403 var block = list.closest('.esl-question-block'); 404 if(block) answers[block.dataset.qid] = Array.from(list.querySelectorAll('.esl-order-item')).map(function(i){ return i.getAttribute('data-aid'); }); 405 }); 406 407 panel.addEventListener('input', function(e){ 408 if(!e.target.classList.contains('esl-fill-input')) return; 409 var block = e.target.closest('.esl-question-block'); 410 if(block) answers[block.dataset.qid] = e.target.value; 411 }); 412 413 /* ââ Ordering arrows (touch-friendly) ââ */ 414 panel.addEventListener('click', function(e){ 415 var arrow = e.target.closest('.esl-order-arrow'); 416 if(!arrow) return; 417 var item = arrow.closest('.esl-order-item'); 418 var block = item ? item.closest('.esl-question-block') : null; 419 if(!block || block.classList.contains('esl-checked')) return; 420 var list = item.closest('.esl-order-list'); 421 if(!list) return; 422 var isUp = arrow.classList.contains('esl-order-up'); 423 var sibling = isUp ? item.previousElementSibling : item.nextElementSibling; 424 if(!sibling) return; 425 // Animate swap 426 item.style.transition = 'transform .2s ease'; 427 sibling.style.transition = 'transform .2s ease'; 428 if(isUp) { list.insertBefore(item, sibling); } 429 else { list.insertBefore(sibling, item); } 430 item.style.animation = 'esl-order-pop .25s ease'; 431 setTimeout(function(){ item.style.animation = ''; }, 250); 432 answers[block.dataset.qid] = Array.from(list.querySelectorAll('.esl-order-item')).map(function(i){ return i.getAttribute('data-aid'); }); 433 }); 434 435 /* ââ Mini confetti burst ââ */ 436 function miniConfetti(el){ 437 var colors = ['#27a9cb','#16a34a','#f59e0b','#8b5cf6','#ef4444','#06b6d4']; 438 var rect = el.getBoundingClientRect(); 439 for(var i=0;i<12;i++){ 440 var p = document.createElement('div'); 441 p.className = 'esl-confetti-particle'; 442 p.style.left = (rect.left + rect.width/2 + (Math.random()-0.5)*60) + 'px'; 443 p.style.top = (rect.top + window.scrollY - 10) + 'px'; 444 p.style.background = colors[Math.floor(Math.random()*colors.length)]; 445 p.style.animationDuration = (.5+Math.random()*.5)+'s'; 446 p.style.animationDelay = (Math.random()*.15)+'s'; 447 document.body.appendChild(p); 448 setTimeout(function(){ p.remove(); }, 1200); 449 } 450 } 451 452 panel.addEventListener('keydown', function(e){ 453 if(e.key===' '||e.key==='Enter'){ 454 var opt=e.target.closest('.esl-option'); if(opt){e.preventDefault();opt.click();} 455 } 456 }); 457 458 function doCheck(btn){ 459 var block = btn.closest('.esl-question-block'); 460 if(!block||block.classList.contains('esl-checked')) return; 461 block.classList.add('esl-checked'); 462 btn.disabled=true; 463 var type=block.dataset.type, qid=block.dataset.qid, isCorrect=false; 464 465 if(type==='fill_blank'){ 466 var inp=block.querySelector('.esl-fill-input'); 467 var val=inp?inp.value.trim().toLowerCase():''; 468 var acc=(block.dataset.correctAnswers||'').split('||').map(function(s){return s.trim().toLowerCase();}); 469 isCorrect=acc.some(function(a){return a===val;}); 470 if(inp){inp.disabled=true;inp.classList.add(isCorrect?'esl-correct':'esl-wrong');} 471 } else if(type==='matching'){ 472 // Matching: check pairs via data-matched attributes 473 var matchWrap=block.querySelector('.esl-match-wrap'); 474 if(matchWrap){ 475 var pairs={},correct=0,total=0; 476 matchWrap.querySelectorAll('.esl-match-item[data-side="left"]').forEach(function(l){ 477 var matched=l.getAttribute('data-matched'); 478 var pg=l.getAttribute('data-pair'); 479 var rightEl=matchWrap.querySelector('.esl-match-item[data-side="right"][data-pair="'+pg+'"]'); 480 total++; 481 if(matched&&rightEl&&matched===rightEl.getAttribute('data-aid')){ 482 correct++;l.classList.add('esl-match-correct'); 483 if(rightEl)rightEl.classList.add('esl-match-correct'); 484 } else { 485 l.classList.add('esl-match-wrong'); 486 if(rightEl)rightEl.classList.add('esl-match-wrong'); 487 } 488 }); 489 isCorrect=(correct===total&&total>0); 490 // Always show correct pairs table after checking 491 if(!block.querySelector('.esl-match-answer-key')){ 492 var key=document.createElement('div'); 493 key.className='esl-match-answer-key'; 494 var rows='<div style="font-weight:600;color:#0f172a;margin-bottom:6px">â Correct pairs:</div>'; 495 matchWrap.querySelectorAll('.esl-match-item[data-side="left"]').forEach(function(l){ 496 var pg=l.getAttribute('data-pair'); 497 var rightEl=matchWrap.querySelector('.esl-match-item[data-side="right"][data-pair="'+pg+'"]'); 498 var userMatchedEl=matchWrap.querySelector('.esl-match-item[data-side="right"][data-aid="'+l.getAttribute('data-matched')+'"]'); 499 var isOk=l.classList.contains('esl-match-correct'); 500 rows+='<div style="display:flex;align-items:center;gap:8px;padding:5px 8px;margin-bottom:4px;border-radius:6px;background:'+(isOk?'#f0fdf4':'#fff8f8')+'">'+ 501 '<span style="color:'+(isOk?'#16a34a':'#dc2626')+';font-size:15px;flex-shrink:0">'+(isOk?'â':'â')+'</span>'+ 502 '<span style="flex:1;color:#0f172a">'+l.textContent+'</span>'+ 503 '<span style="color:#94a3b8;flex-shrink:0">â</span>'+ 504 '<span style="flex:1;color:'+(isOk?'#16a34a':'#16a34a')+'">'+( rightEl?rightEl.textContent:'' )+'</span>'+ 505 '</div>'; 506 if(!isOk && userMatchedEl){ 507 rows+='<div style="font-size:11px;color:#dc2626;padding:0 8px 6px 31px">You chose: '+userMatchedEl.textContent+'</div>'; 508 } 509 }); 510 key.innerHTML=rows; 511 matchWrap.parentNode.insertBefore(key, matchWrap.nextSibling); 512 } 513 } 514 matchWrap&&matchWrap.querySelectorAll('.esl-match-item').forEach(function(i){i.style.pointerEvents='none';}); 515 } else if(type==='ordering'){ 516 var ordList=block.querySelector('.esl-order-list'); 517 if(ordList){ 518 var items=Array.from(ordList.querySelectorAll('.esl-order-item')); 519 // Sort by data-pos (1-based) to get correct sequence 520 var correctSeq=items.slice().sort(function(a,b){ 521 return parseInt(a.getAttribute('data-pos'),10)-parseInt(b.getAttribute('data-pos'),10); 522 }).map(function(i){ return i.getAttribute('data-aid'); }); 523 var userSeq=items.map(function(i){ return i.getAttribute('data-aid'); }); 524 var allCorrect=userSeq.join(',')=== correctSeq.join(',');
525 items.forEach(function(item,idx){ 526 item.style.pointerEvents='none'; 527 var isItemOk=item.getAttribute('data-aid')===correctSeq[idx]; 528 item.classList.add(isItemOk?'esl-order-correct':'esl-order-wrong'); 529 }); 530 isCorrect=allCorrect; 531 if(!allCorrect){ 532 // Show correct order as hint below list 533 var hint=block.querySelector('.esl-order-correct-hint'); 534 if(!hint){ 535 hint=document.createElement('p'); 536 hint.className='esl-order-correct-hint'; 537 ordList.parentNode.insertBefore(hint, ordList.nextSibling); 538 } 539 hint.innerHTML='<strong>Correct order:</strong> '+correctSeq.map(function(aid){ 540 var el=ordList.querySelector('[data-aid="'+aid+'"]'); 541 return el?el.querySelector('.esl-order-text').textContent:''; 542 }).join(' â '); 543 } 544 } 545 } else if(type==='sentence_building'){ 546 var sbAns=block.querySelector('.esl-sentence-answer'); 547 if(sbAns){ 548 var chips=Array.from(sbAns.querySelectorAll('.esl-word-chip')); 549 var sbBank=block.querySelector('.esl-sentence-bank'); 550 var sbWrap=block.querySelector('.esl-sentence-wrap'); 551 // Get all bank chips (including used) for content lookup 552 var allBankChips=sbBank?Array.from(sbBank.querySelectorAll('.esl-word-chip')):[]; 553 function getTextByAid(aid){ 554 for(var i=0;i<allBankChips.length;i++){ 555 if(allBankChips[i].getAttribute('data-aid')===String(aid)) return allBankChips[i].textContent; 556 } 557 return ''; 558 } 559 var correctOrder=(block.getAttribute('data-correct-order')||'').split(',').filter(Boolean); 560 // Compare by TEXT content (handles duplicate words like two "to") 561 var userTexts=chips.map(function(c){ return c.textContent.trim(); }); 562 var correctTexts=correctOrder.map(function(aid){ return getTextByAid(aid).trim(); }); 563 isCorrect = userTexts.join(' ') === correctTexts.join(' '); 564 // Lock all chips 565 chips.forEach(function(c){ c.style.pointerEvents='none'; }); 566 allBankChips.forEach(function(c){ c.style.pointerEvents='none'; }); 567 // Show correct sentence hint AFTER the wrap (not between answer and bank) 568 var hintTarget = sbWrap || sbAns; 569 var sbHint=block.querySelector('.esl-sb-correct-hint'); 570 if(!sbHint){ 571 sbHint=document.createElement('div'); 572 sbHint.className='esl-sb-correct-hint'; 573 hintTarget.parentNode.insertBefore(sbHint, hintTarget.nextSibling); 574 } 575 sbHint.innerHTML='<span style="font-weight:600;color:#16a34a">â Correct sentence:</span> <span style="color:#0f172a">'+ 576 correctTexts.join(' ')+'</span>'; 577 } 578 } else { 579 var sel=block.querySelector('.esl-option.esl-selected'); 580 isCorrect=!!sel&&sel.dataset.correct==='1'; 581 block.querySelectorAll('.esl-option').forEach(function(o){ 582 if(o.dataset.correct==='1') o.classList.add('esl-correct'); 583 else if(o.classList.contains('esl-selected')) o.classList.add('esl-wrong'); 584 o.style.pointerEvents='none'; 585 }); 586 } 587 588 if(isCorrect) correct_count++; 589 checked++; 590 // Analytics: answer checked 591 window.dataLayer && window.dataLayer.push({event:'quiz_answer',test_id:894,question_index:checked,question_type:type,is_correct:isCorrect}); 592 // Sound feedback 593 if(window.eslSFX){ isCorrect ? eslSFX.correct() : eslSFX.wrong(); } 594 595 var fb = document.getElementById('esl-mini-fb-'+qid); 596 if(fb){ 597 fb.classList.add('esl-show', isCorrect?'esl-fb-correct':'esl-fb-wrong'); 598 var icon=fb.querySelector('.esl-fb-icon'), txt=fb.querySelector('.esl-fb-text'); 599 if(icon) icon.textContent = isCorrect?'â':'â'; 600 var correctMsgs = ['Correct!','Great job!','Nailed it!','Perfect!','Well done!']; 601 var wrongMsgs = ['Not quite.','Incorrect.','Keep trying!','Almost!']; 602 if(txt) txt.textContent = isCorrect 603 ? correctMsgs[Math.floor(Math.random()*correctMsgs.length)] 604 : wrongMsgs[Math.floor(Math.random()*wrongMsgs.length)]; 605 // Confetti on correct 606 if(isCorrect && typeof miniConfetti==='function') miniConfetti(fb); 607 } 608 609 // Add correct/wrong visual to sentence answer area 610 if(type==='sentence_building'){ 611 var sbAnsEl = block.querySelector('.esl-sentence-answer'); 612 if(sbAnsEl) sbAnsEl.classList.add(isCorrect?'esl-sb-correct':'esl-sb-wrong'); 613 } 614 615 if(current===TOTAL-1){ 616 btnSub.style.display=''; 617 setTimeout(function(){ btnSub.scrollIntoView({behavior:'smooth',block:'nearest'}); },400); 618 } 619 } 620 621 function doSubmit(){ 622 if(btnSub.disabled) return; 623 btnSub.disabled=true; btnSub.textContent='Submittingâ¦'; 624 var timeSpent = Math.round((Date.now()-started)/1000); 625 626 if(LOGGED){ 627 /* Logged-in: submit to API â xp_cap=MINI_XP_MAX (5) so server caps correctly */ 628 fetch(REST+'tests/'+TESTID+'/submit',{ 629 method:'POST', 630 headers:{'Content-Type':'application/json','X-WP-Nonce':NONCE}, 631 body:JSON.stringify({answers:answers, time_spent:timeSpent, xp_cap:MINI_XP_MAX}) 632 }).then(function(r){return r.json();}) 633 .then(function(res){ 634 if(res && res.score_pct!==undefined){ showLoggedResult(res, correct_count); } 635 else { showLoggedResult(null, correct_count); } 636 }).catch(function(){ showLoggedResult(null, correct_count); }); 637 } else { 638 /* Guest: park the answers, then show the capture card. */ 639 var parked = eslParkResult(TESTID, answers, timeSpent, MINI_XP_MAX); 640 eslPingGuestResult(TESTID); 641 showGuestResult(correct_count, parked); 642 } 643 } 644 645 /* ââ v1.6.17 â park a guest result so signing in can CLAIM it âââââââââ 646 Until now "Sign up to save your score" was not true: nothing was kept 647 and the account started at zero. We now stash the raw answers, and a 648 site-wide helper replays them through the normal submit endpoint the 649 moment this browser is logged in. Same scoring, same XP, same streak, 650 same mistake notebook â no second code path. */ 651 function eslParkResult(testId, ans, secs, xpCap){ 652 try{ 653 // Nothing answered = nothing worth claiming. Parking {} would hand a 654 // brand-new account a 0% result row, 1 XP and a streak day for free. 655 var any = false, k; 656 for(k in ans){ if(Object.prototype.hasOwnProperty.call(ans,k)){ any = true; break; } } 657 if(!any) return false;
658 var payload = {id:testId, answers:ans, time_spent:secs||0, ts:Date.now(), tries:0}; 659 if(xpCap) payload.xp_cap = xpCap; 660 window.localStorage.setItem(PKEY, JSON.stringify(payload)); 661 // Short on purpose. This cookie is the only thing linking a parked 662 // result to whoever logs in next, and shared computers are normal in 663 // schools and libraries â a fortnight-old result must never land in 664 // a stranger's history, XP, streak and mistake notebook. 665 document.cookie = PKEY + '=1; path=/; max-age=' + PTTL + '; SameSite=Lax'; 666 return true; 667 }catch(e){ return false; } 668 } 669 var PKEY = 'esl_pending_result'; 670 var PTTL = 7200; 671 function eslPingGuestResult(testId){ 672 try{ 673 fetch(REST+'growth/guest-result',{ 674 method:'POST', credentials:'same-origin', 675 headers:{'Content-Type':'application/json'}, 676 body:JSON.stringify({test:testId}) 677 })['catch'](function(){}); 678 }catch(e){} 679 } 680 // Only /login/ reads redirect_to (forum/shortcodes/login.php). The signup 681 // handler routes by audience instead, so adding it there would be dead 682 // weight in the URL. 683 function eslClaimUrl(base){ 684 var u = base + '?src=quiz_result'; 685 if(base.indexOf('/login') === 0){ 686 try{ u += '&redirect_to=' + encodeURIComponent(location.href.split('#')[0]); }catch(e){} 687 } 688 return u; 689 } 690 691 /* ââ v1.9.29 (C4) â "WHAT NEXT?" ââââââââââââââââââââââââââââââââââââ 692 * 693 * Trưá»c bản nà y mà n hình kết quả có Äúng hai ÄÆ°á»ng ra, và má»t trong hai 694 * chá» tá»n tại khi bà i có Äá» Äầy Äá»§ riêng. Vá»i phần lá»n trong 3.772 bà i 695 * có quiz, ÄÆ°á»ng ra duy nhất là "Try again" â tải lại chÃnh trang vừa 696 * là m xong. Ngõ cụt, trên 96% sá» bà i có lưu lượng tháºt từ Google. 697 * 698 * Ba nguá»n, theo thứ tá»± ưu tiên: 699 * 1. viá»c tiếp theo RIÃNG cá»§a ngưá»i Äang xem (REST trả vá», per-user) 700 * 2. chuyên mục cá»§a chÃnh bà i nà y (dá»±ng sẵn, cache-safe) 701 * 3. giao bà i cho lá»p (chá» khi nút giao bà i 702 * Äã xác minh có mặt trên trang â xem dưá»i) 703 */ 704 function eslEsc(s){ 705 return String(s == null ? '' : s) 706 .replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') 707 .replace(/"/g,'"').replace(/'/g,'''); 708 } 709 /* Má»t gợi ý trá» vá» ÄÃNG trang Äang má» còn tá» hÆ¡n không gợi ý gì: nó 710 trông như má»t ÄÆ°á»ng ra nhưng không ÄÆ°a ngưá»i ta Äi Äâu cả. */ 711 function eslSamePage(u){ 712 try{ 713 var a = document.createElement('a'); a.href = u; 714 return a.pathname.replace(/\/+$/,'') === location.pathname.replace(/\/+$/,''); 715 }catch(e){ return false; } 716 } 717 function eslNextBlock(res){ 718 var n = (res && res.next_step && res.next_step.url) ? res.next_step : null; 719 if (n && eslSamePage(n.url)) { n = null; } 720 721 var rows = ''; 722 if (n) { 723 rows += '<a class="esl-c4row" href="'+eslEsc(n.url)+'">' 724 + '<span class="esl-c4row__t">'+eslEsc(n.title)+'</span>' 725 + (n.why ? '<span class="esl-c4row__w">'+eslEsc(n.why)+'</span>' : '') 726 + '<span class="esl-c4row__go">'+eslEsc(n.cta || 'Start')+' â</span></a>'; 727 } else if (CATURL) { 728 rows += '<a class="esl-c4row" href="'+eslEsc(CATURL)+'">' 729 + '<span class="esl-c4row__t">More '+eslEsc(CATNAME)+'</span>' 730 + '<span class="esl-c4row__w">Lessons and quizzes on the same topic</span>' 731 + '<span class="esl-c4row__go">Browse â</span></a>'; 732 } 733 734 /* GIÃO VIÃN. Không há»i cookie, không há»i vai trò: chá» há»i "nút giao 735 bà i có trên trang nà y không". Nút Äó do core dá»±ng và Äã Äi qua 736 esl_class_ui_eligible() â tức là giáo viên Äà XÃC MINH, Äã ÄÄng 737 nháºp. Dùng sá»± có mặt cá»§a nó là m cá»ng thì không có gì Äá» giả mạo, 738 và không thêm má»t byte nà o cho ngưá»i khác. */ 739 if (document.querySelector('[data-esl-as="open"]')) { 740 rows += '<button type="button" class="esl-c4row" data-esl-c4="assign">' 741 + '<span class="esl-c4row__t">Set this for your class</span>' 742 + '<span class="esl-c4row__w">They get it as homework, and you see each score</span>' 743 + '<span class="esl-c4row__go">Assign â</span></button>'; 744 } 745 746 if (!rows) { return ''; } 747 return '<div class="esl-c4next"><p class="esl-c4next__h">What next?</p>'+rows+'</div>'; 748 } 749 /* Nút giao bà i Äã có sẵn trên trang và Äã mang Äá»§ data-src / data-ref / 750 data-title cá»§a ÄÃNG bà i nà y. Bấm há» nó là má» Äúng há»p thoại Äó, vá»i 751 Äúng dữ liá»u Äó â không nhân bản má»t ÄÆ°á»ng giao bà i thứ hai, và nếu 752 core Äá»i cách giao bà i thì chá» nà y tá»± Äi theo. */ 753 function eslWireC4(root){ 754 if (!root) { return; } 755 var b = root.querySelector('[data-esl-c4="assign"]'); 756 if (!b) { return; } 757 b.addEventListener('click', function(){ 758 var t = document.querySelector('[data-esl-as="open"]'); 759 if (t) { t.click(); } 760 }); 761 } 762 763 var PASS_THRESHOLD = Math.ceil(TOTAL * 0.6); // 60% = 3/5 764 function showLoggedResult(res, correctN){ 765 var shownTotal = TOTAL; 766 // v1.6.21 â the server now grades exactly these 5 questions, and it is 767 // the one that knows the test's real pass_score and awards partial 768 // credit on matching questions. Take its numbers when we have them; 769 // the local estimate is the offline fallback only. 770 var pct = Math.round(correctN / TOTAL * 100); 771 var passed = correctN >= PASS_THRESHOLD; 772 if (res && res.score_pct !== undefined && res.score_pct !== null) { 773 var spct = parseInt(res.score_pct, 10); 774 if (!isNaN(spct)) { pct = spct; } 775 passed = !!res.passed; 776 // Take the headline count from the same place as the percentage. 777 // The local tally treats every question as worth one point, but the 778 // server weights by q.points and gives matching questions partial 779 // credit â so "4/5 correct" beside "100%" was possible. 780 if (res.detail) { 781 var sc = 0, sn = 0, dk; 782 for (dk in res.detail) { 783 if (!Object.prototype.hasOwnProperty.call(res.detail, dk)) { continue; } 784 sn++; 785 if (res.detail[dk] && res.detail[dk].correct) { sc++; } 786 }
787 // Denominator too: TOTAL was baked into this page when it was 788 // cached, and the graded slice can be smaller if the test shrank. 789 if (sn > 0) { correctN = sc; shownTotal = sn; } 790 } 791 } 792 // Analytics: mini quiz completed 793 window.dataLayer && window.dataLayer.push({event:'quiz_complete',test_id:894,score_pct:pct,passed:passed,logged_in:true,total_questions:shownTotal,questions_answered:checked,quiz_type:'mini'}); 794 // Sound effects 795 if(window.eslSFX){ 796 setTimeout(function(){ passed ? eslSFX.pass() : eslSFX.fail(); }, 300); 797 if(passed) setTimeout(function(){ eslSFX.xp(); }, 900); 798 if(pct === 100) setTimeout(function(){ eslSFX.perfect(); }, 400); 799 } 800 // XP: prefer what the server actually stored (v1.6.21 â the mini quiz 801 // is graded on its own 5 questions now, and a repeat that does not beat 802 // the learner's best mini score legitimately earns 0). Fall back to the 803 // local estimate only when the request failed and res is null. 804 var xp = (res && res.xp_earned !== undefined && res.xp_earned !== null) 805 ? parseInt(res.xp_earned, 10) 806 : Math.max(1, Math.round(pct / 100 * MINI_XP_MAX)); 807 if (isNaN(xp) || xp < 0) { xp = 0; } 808 var html = '<div class="esl-result-screen" style="padding:28px 24px;text-align:center">'; 809 html += '<div style="font-size:48px;margin-bottom:8px">'+(correctN===shownTotal?'ð':correctN>=3?'ð':'ðª')+'</div>'; 810 html += '<h3 class="esl-result-title" style="margin-bottom:6px">You got '+correctN+'/'+shownTotal+' correct!</h3>'; 811 if(xp>0){ 812 html += '<div class="esl-xp-toast" style="margin:12px auto">â¡ +'+xp+' XP earned!</div>'; 813 } 814 var stk = res && res.streak ? res.streak : 0; 815 if(stk>=1){ 816 html += '<div style="margin:0 auto 6px;color:#475569;font-size:13px">ð¥ Day '+stk+' of your streak'+(stk>=2?' â don\'t break it tomorrow.':' â come back tomorrow to make it 2.')+'</div>'; 817 } 818 html += '<div class="esl-result-stats" style="margin:16px 0">'; 819 html += '<div class="esl-result-stat"><strong>'+pct+'%</strong><span>Score</span></div>'; 820 html += '<div class="esl-result-stat"><strong>'+correctN+'/'+shownTotal+'</strong><span>Correct</span></div>'; 821 html += '</div>'; 822 823 /* CTA to full test */ 824 if(FULLURL && FULLCOUNT>TOTAL){ 825 html += '<a href="'+FULLURL+'" style="display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;padding:13px 24px;border-radius:50px;font-size:14px;font-weight:700;text-decoration:none;margin-bottom:12px">'; 826 html += 'ð Take the Full '+FULLCOUNT+'-Question Test â Earn up to +'+FULL_TEST_XP+' XP</a>'; 827 html += '<p style="font-size:12px;color:#64748b;margin:0">Complete the full test to climb the leaderboard!</p>'; 828 } 829 html += eslNextBlock(res); 830 html += '<div style="margin-top:14px"><button class="esl-btn esl-btn-outline" onclick="location.reload()">Try again</button></div>'; 831 html += '</div>'; 832 wrap.innerHTML = html; 833 eslWireC4(wrap); 834 } 835 836 function showGuestResult(correctN, parked){ 837 // Analytics: mini quiz completed (guest) + signup prompt 838 var pctG = Math.round(correctN / TOTAL * 100); 839 window.dataLayer && window.dataLayer.push({event:'quiz_complete',test_id:894,score_pct:pctG,logged_in:false,total_questions:TOTAL,quiz_type:'mini'}); 840 window.dataLayer && window.dataLayer.push({event:'signup_prompt_shown',test_id:894,trigger:'quiz_complete'}); 841 var html = '<div class="esl-result-screen" style="padding:28px 24px;text-align:center">'; 842 html += '<div style="font-size:48px;margin-bottom:8px">'+(correctN===TOTAL?'\uD83C\uDFC6':correctN>=3?'\uD83D\uDC4F':'\uD83D\uDCAA')+'</div>'; 843 html += '<h3 class="esl-result-title" style="margin-bottom:6px">You got '+correctN+'/'+TOTAL+' correct \u2014 '+pctG+'%</h3>'; 844 html += '<div style="background:rgba(39,169,203,.08);border:1.5px solid rgba(39,169,203,.25);border-radius:12px;padding:16px 18px;margin:16px 0;text-align:left">'; 845 if(parked){ 846 html += '<p style="margin:0 0 10px;font-size:15px;font-weight:800;color:#0f172a">Keep this result \u2014 free account</p>'; 847 html += '<ul style="margin:0 0 14px;padding-left:18px;font-size:13.5px;color:#334155;line-height:1.75">'; 848 html += '<li>This score is saved and the XP is added \u2014 nothing is retyped</li>'; 849 html += '<li>\uD83D\uDD25 Your daily streak starts today</li>'; 850 html += '<li>Every question you missed goes to your Mistake Notebook to redo</li>'; 851 html += '</ul>'; 852 } else { 853 html += '<p style="margin:0 0 12px;font-size:15px;font-weight:800;color:#0f172a">Free account \u2014 save your scores, XP and streak</p>'; 854 } 855 html += '<div style="display:flex;gap:10px;flex-wrap:wrap">'; 856 html += '<a href="'+eslClaimUrl('/signup/')+'" style="background:linear-gradient(135deg,#0f7ea4,#27a9cb);color:#fff;padding:11px 22px;border-radius:50px;font-size:13.5px;font-weight:800;text-decoration:none">'+(parked?'Save my result \u2014 free':'Create a free account')+'</a>'; 857 html += '<a href="'+eslClaimUrl('/login/')+'" style="background:#f4f8fb;border:1.5px solid #e3ebf3;color:#0f172a;padding:11px 20px;border-radius:50px;font-size:13.5px;font-weight:700;text-decoration:none">I already have one</a>'; 858 html += '</div>'; 859 html += '<p style="margin:10px 0 0;font-size:11.5px;color:#94a3b8">Free forever. No card. All 80+ tools stay free either way.</p>'; 860 html += '</div>'; 861 if(FULLURL && FULLCOUNT>TOTAL){ 862 html += '<p style="font-size:13px;color:#475569;margin:0 0 8px">Ready for the full '+FULLCOUNT+'-question test?</p>'; 863 html += '<a href="'+FULLURL+'" style="display:inline-flex;align-items:center;gap:6px;border:1.5px solid #27a9cb;color:#0f7ea4;padding:10px 20px;border-radius:50px;font-size:13px;font-weight:700;text-decoration:none;margin-bottom:12px">View Full Test \u2192</a>'; 864 } 865 html += eslNextBlock(null); 866 html += '<div style="margin-top:14px"><button class="esl-btn esl-btn-outline" onclick="location.reload()">Try again</button></div>'; 867 html += '</div>'; 868 wrap.innerHTML = html; 869 eslWireC4(wrap); 870 } 871 872 showBlock(0); 873 })();</script>
873 <aside class="esl-fulltest-cta" aria-label="Full test"><div class="esl-fulltest-cta__text"><p class="esl-fulltest-cta__eyebrow">Full assessment</p><p class="esl-fulltest-cta__headline">Articles Practice Test (A1-B2) â Grammar Exercises with Answers</p><p class="esl-fulltest-cta__sub">20 questions · timed mode · full feedback</p></div> <a class="esl-fulltest-cta__btn" href="https://7esl.com/practice/grammar/articles-test/"> Take the full test <svg viewBox="0 0 24 24" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg> </a></aside></section><section class="sevenesl-helpful-widget inside-article" data-helpful-object-type="term" data-helpful-object-id="37395" data-helpful-storage-key="sevenesl_helpful_term_37395"><div class="sevenesl-helpful-widget__inner"><div class="sevenesl-helpful-widget__copy"><p class="sevenesl-helpful-widget__eyebrow">Quick Feedback</p><h2 class="sevenesl-helpful-widget__title">Is this article helpful?</h2></div><div class="sevenesl-helpful-widget__actions" role="group" aria-label="Was this article helpful?"> <button type="button" class="sevenesl-helpful-button is-yes" data-helpful-vote="yes" aria-pressed="false"> <span class="sevenesl-helpful-button__icon" aria-hidden="true">ð</span> <span class="sevenesl-helpful-button__label">Yes</span> <span class="sevenesl-helpful-button__count" data-helpful-count="yes">23</span> </button> <button type="button" class="sevenesl-helpful-button is-no" data-helpful-vote="no" aria-pressed="false"> <span class="sevenesl-helpful-button__icon" aria-hidden="true">â¹ï¸</span> <span class="sevenesl-helpful-button__label">No</span> <span class="sevenesl-helpful-button__count" data-helpful-count="no">0</span> </button></div><p class="sevenesl-helpful-widget__status" data-helpful-status aria-live="polite"></p></div></section><section class="sevenesl-helpful-related inside-article" aria-label="Other Students Also Like"><div class="sevenesl-helpful-related__header"><p class="sevenesl-helpful-related__eyebrow">Related posts</p><h2 class="sevenesl-helpful-related__title">Other Students Also Like</h2></div><div class="sevenesl-helpful-related__grid"><article class="sevenesl-helpful-related-card"> <a class="sevenesl-helpful-related-card__link" href="https://7esl.com/a-versus-an/"> <span class="sevenesl-helpful-related-card__kicker">Articles</span><div class="sevenesl-helpful-related-card__top"> <span class="sevenesl-helpful-related-card__meta">ð 5</span></div><h3 class="sevenesl-helpful-related-card__title">A vs. An: Mastering the Basics of English Articles</h3><p class="sevenesl-helpful-related-card__summary">When speaking or writing in English, you will notice that there are two forms of the indefinite article, âaâ andâ¦</p> </a></article><article class="sevenesl-helpful-related-card"> <a class="sevenesl-helpful-related-card__link" href="https://7esl.com/use-no-article-rules/"> <span class="sevenesl-helpful-related-card__kicker">Articles</span><div class="sevenesl-helpful-related-card__top"> <span class="sevenesl-helpful-related-card__meta">ð 3</span></div><h3 class="sevenesl-helpful-related-card__title">When to Use No Article in English with 7 Useful Rules</h3><p class="sevenesl-helpful-related-card__summary">Understanding when to use no article in English is essential for mastering grammar. This article covers key rules and providesâ¦</p> </a></article><article class="sevenesl-helpful-related-card"> <a class="sevenesl-helpful-related-card__link" href="https://7esl.com/rules-for-using-the/"> <span class="sevenesl-helpful-related-card__kicker">Articles</span><div class="sevenesl-helpful-related-card__top"> <span class="sevenesl-helpful-related-card__meta">ð 3</span></div><h3 class="sevenesl-helpful-related-card__title">When to Use THE: Essential Rules for English Learners</h3><p class="sevenesl-helpful-related-card__summary">The article covers key information about the definite article "THE," including its rules and proper usage. You will learn whenâ¦</p> </a></article></div></section><section class="sevenesl-archive-list sevenesl-category-article-list inside-article"><div class="sevenesl-section-heading"><div><p class="sevenesl-section-heading__eyebrow">Curated list</p><h2 class="title-custom-list">More Articles in Articles</h2></div><div class="sevenesl-section-heading__meta">5 articles</div></div><ol class="custom-list sevenesl-archive-posts sevenesl-archive-posts--numbered">
873<li> <a href="https://7esl.com/a-versus-an/"> <span class="sevenesl-archive-posts__title">A vs. An: Mastering the Basics of English Articles</span> </a></li><li> <a href="https://7esl.com/articles-with-countable-and-uncountable-nouns/"> <span class="sevenesl-archive-posts__title">Articles with Countable and Uncountable Nouns</span> </a></li><li> <a href="https://7esl.com/article-worksheets/"> <span class="sevenesl-archive-posts__title">Mastering Articles in English: Practice Exercises & Downloadable Worksheets</span> </a></li><li> <a href="https://7esl.com/use-no-article-rules/"> <span class="sevenesl-archive-posts__title">When to Use No Article in English with 7 Useful Rules</span> </a></li><li> <a href="https://7esl.com/rules-for-using-the/"> <span class="sevenesl-archive-posts__title">When to Use THE: Essential Rules for English Learners</span> </a></li></ol></section></main></div><div class="widget-area sidebar is-right-sidebar" id="right-sidebar"><div class="inside-right-sidebar"><aside class="widget sevenesl-sidebar-search-widget" aria-label="Search 7ESL"><form role="search" method="get" class="sevenesl-sidebar-search-form" action="https://7esl.com/" data-sevenesl-popup-search="true"><label class="screen-reader-text" for="sevenesl-sidebar-search-input-1">Search 7ESL</label><div class="sevenesl-sidebar-search-form__inner"><input type="search" id="sevenesl-sidebar-search-input-1" class="sevenesl-sidebar-search-form__field" placeholder="Search" value="" name="s" autocomplete="off" /><button type="submit" class="sevenesl-sidebar-search-form__button" aria-label="Search"><svg viewBox="0 0 24 24" focusable="false" aria-hidden="true"><path d="M10.5 4.75a5.75 5.75 0 1 0 0 11.5a5.75 5.75 0 0 0 0-11.5Zm0-1.5a7.25 7.25 0 1 1 0 14.5a7.25 7.25 0 0 1 0-14.5Zm6.23 12.42l3.52 3.52a.75.75 0 1 1-1.06 1.06l-3.52-3.52a.75.75 0 1 1 1.06-1.06Z" fill="currentColor"></path></svg></button></div></form></aside><aside id="text-6" class="widget inner-padding widget_text"><div class="textwidget"><div class="esl-lbw "><div class="esl-lbw__head"><span aria-hidden="true">ð</span> Weekly Top 5</div><div class="esl-lbw__list"> <a href="https://7esl.com/profile/?u=3673" class="esl-lbw__row" title="anita silvia"> <span class="esl-lbw__rank">ð¥</span> <picture decoding="async" class="esl-lbw__av" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"> 874<source type="image/webp" srcset="https://7esl.com/wp-content/uploads/nsl_avatars/f157ed89af0aa1baaed5758d7d743a23.png.webp"/> 875<img decoding="async" src="https://7esl.com/wp-content/uploads/nsl_avatars/f157ed89af0aa1baaed5758d7d743a23.png" alt="" width="34" height="34" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"/> 876</picture> 877 <span class="esl-lbw__name">anita silvia</span> <span class="esl-lbw__xp">+372 XP</span> </a> <a href="https://7esl.com/profile/?u=8778" class="esl-lbw__row" title="à Ngô Ngá»c Như"> <span class="esl-lbw__rank">ð¥</span> <picture decoding="async" class="esl-lbw__av" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"> 878<source type="image/webp" srcset="https://7esl.com/wp-content/uploads/nsl_avatars/1a67f04c49106cf9c7ad32578cba5566.jpg.webp"/> 879<img decoding="async" src="https://7esl.com/wp-content/uploads/nsl_avatars/1a67f04c49106cf9c7ad32578cba5566.jpg" alt="" width="34" height="34" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"/> 880</picture> 881 <span class="esl-lbw__name">à Ngô Ngá»c Như</span> <span class="esl-lbw__xp">+268 XP</span> </a> <a href="https://7esl.com/profile/?u=9114" class="esl-lbw__row" title="z Jry"> <span class="esl-lbw__rank">ð¥</span> <picture decoding="async" class="esl-lbw__av" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"> 882<source type="image/webp" srcset="https://7esl.com/wp-content/uploads/nsl_avatars/0aa6ab9aaac3d37a6cf20255654b7f9d.png.webp"/> 883<img decoding="async" src="https://7esl.com/wp-content/uploads/nsl_avatars/0aa6ab9aaac3d37a6cf20255654b7f9d.png" alt="" width="34" height="34" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"/> 884</picture> 885 <span class="esl-lbw__name">z Jry</span> <span class="esl-lbw__xp">+195 XP</span> </a> <a href="https://7esl.com/profile/?u=9220" class="esl-lbw__row" title="Kayden Stoops"> <span class="esl-lbw__rank esl-lbw__rank--num">4</span> <picture decoding="async" class="esl-lbw__av" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"> 886<source type="image/webp" srcset="https://7esl.com/wp-content/uploads/nsl_avatars/879f511e94301182d0643ed3c8b57c81.png.webp"/> 887<img decoding="async" src="https://7esl.com/wp-content/uploads/nsl_avatars/879f511e94301182d0643ed3c8b57c81.png" alt="" width="34" height="34" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"/> 888</picture> 889 <span class="esl-lbw__name">Kayden Stoops</span> <span class="esl-lbw__xp">+190 XP</span> </a> <a href="https://7esl.com/profile/?u=9068" class="esl-lbw__row" title="chino Mandarin"> <span class="esl-lbw__rank esl-lbw__rank--num">5</span> <picture decoding="async" class="esl-lbw__av" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"> 890<source type="image/webp" srcset="https://7esl.com/wp-content/uploads/nsl_avatars/c3c943c14a5debfe267a045b5aff6b43.png.webp"/> 891<img decoding="async" src="https://7esl.com/wp-content/uploads/nsl_avatars/c3c943c14a5debfe267a045b5aff6b43.png" alt="" width="34" height="34" loading="lazy" onerror="this.onerror=null;this.src='https://www.gravatar.com/avatar/?d=mp';"/> 892</picture> 893 <span class="esl-lbw__name">chino Mandarin</span> <span class="esl-lbw__xp">+152 XP</span> </a></div><div class="esl-lbw__foot">Updated 11 min ago</div></div></div></aside>
893<aside id="nav_menu-19" class="widget inner-padding widget_nav_menu sevenesl-interesting-topics-widget sevenesl-topic-widget"><h2 class="widget-title">Interesting Topics</h2><div class="menu-sidebar-container"><ul id="menu-sidebar" class="menu"><li id="menu-item-102385" class="menu-item menu-item-type-taxonomy menu-item-object-category current-category-ancestor menu-item-102385"><a href="https://7esl.com/category/grammar/">Grammar</a></li><li id="menu-item-102393" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-102393"><a href="https://7esl.com/category/vocabulary/">Vocabulary</a></li><li id="menu-item-102387" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102387"><a href="https://7esl.com/category/visual-vocabulary/">Visual Vocabulary</a></li><li id="menu-item-102386" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102386"><a href="https://7esl.com/category/writing/">Writing</a></li><li id="menu-item-102392" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102392"><a href="https://7esl.com/category/speaking/">Speaking</a></li><li id="menu-item-102388" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102388"><a href="https://7esl.com/category/words-list/">Words List</a></li><li id="menu-item-102467" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102467"><a href="https://7esl.com/category/slang/">Slang</a></li><li id="menu-item-102466" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102466"><a href="https://7esl.com/category/internet-slang/">Internet Slang</a></li><li id="menu-item-102468" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-102468"><a href="https://7esl.com/category/idioms/">Idioms</a></li><li id="menu-item-102390" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102390"><a href="https://7esl.com/category/foreign-language/">Foreign Words</a></li><li id="menu-item-102391" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102391"><a href="https://7esl.com/category/positive-words/">Positive Words & Phrases</a></li><li id="menu-item-102389" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102389"><a href="https://7esl.com/category/business-english/">Business English</a></li><li id="menu-item-102394" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-102394"><a href="https://7esl.com/category/american-and-british-english/">British vs. American English</a></li></ul></div></aside></div></div></div></div><div class="site-footer"></div><a title="Scroll back to top" aria-label="Scroll back to top" rel="nofollow" href="#" class="generate-back-to-top" data-scroll-speed="400" data-start-scroll="300" role="button"> <span class="gp-icon icon-arrow-up"><svg viewBox="0 0 330 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M305.863 314.916c0 2.266-1.133 4.815-2.832 6.514l-14.157 14.163c-1.699 1.7-3.964 2.832-6.513 2.832-2.265 0-4.813-1.133-6.512-2.832L164.572 224.276 53.295 335.593c-1.699 1.7-4.247 2.832-6.512 2.832-2.265 0-4.814-1.133-6.513-2.832L26.113 321.43c-1.699-1.7-2.831-4.248-2.831-6.514s1.132-4.816 2.831-6.515L158.06 176.408c1.699-1.7 4.247-2.833 6.512-2.833 2.265 0 4.814 1.133 6.513 2.833L303.03 308.4c1.7 1.7 2.832 4.249 2.832 6.515z" fill-rule="nonzero" /></svg></span> </a><footer class="escx-foot"><div class="escx-wrap escx-foot__top"><div class="escx-foot__brand"> <a href="https://7esl.com/" class="escx-logo escx-logo--foot"> <img loading="lazy" src="https://7esl.com/wp-content/plugins/7esl-core/assets/images/logo-7esl-light.svg" alt="7ESL" width="139" height="36" 894onerror="this.style.display='none';this.nextElementSibling.style.display='inline-flex'"> <span style="display:none;align-items:center;gap:8px">7<b>ESL</b></span> </a><p>Established in 2017, 7ESL is a leading global English-learning platform — clear lessons, practical tools, fun games and exam practice to help millions learn, teach and master English.</p><div class="escx-foot__social"> <a href="https://www.facebook.com/7ESLAI" aria-label="Facebook"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/></svg></a> <a href="https://www.pinterest.com/7english/" aria-label="Pinterest"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2a10 10 0 0 0-3.6 19.3c-.1-.9-.1-2.2.1-3.1l1.2-5s-.3-.6-.3-1.5c0-1.4.8-2.4 1.8-2.4.9 0 1.3.6 1.3 1.4 0 .9-.5 2.1-.8 3.3-.2 1 .5 1.7 1.4 1.7 1.7 0 3-1.8 3-4.4 0-2.3-1.6-3.9-4-3.9-2.7 0-4.3 2-4.3 4.1 0 .8.3 1.7.7 2.1a.3.3 0 0 1 .1.3l-.3 1.1c0 .2-.1.2-.3.1-1.2-.5-1.9-2.3-1.9-3.7 0-3 2.2-5.7 6.3-5.7 3.3 0 5.9 2.4 5.9 5.5 0 3.3-2.1 5.9-5 5.9-1 0-1.9-.5-2.2-1.1 0 0-.5 1.9-.6 2.3-.2.8-.8 1.9-1.2 2.5A10 10 0 1 0 12 2z"/>
894</svg></a> <a href="https://www.youtube.com/channel/UCPDQgXju7hqEGBwzLIeI7Zw" aria-label="YouTube"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23 12s0-3.5-.4-5.2a2.7 2.7 0 0 0-1.9-1.9C18.9 4.5 12 4.5 12 4.5s-6.9 0-8.7.4a2.7 2.7 0 0 0-1.9 1.9C1 8.5 1 12 1 12s0 3.5.4 5.2a2.7 2.7 0 0 0 1.9 1.9c1.8.4 8.7.4 8.7.4s6.9 0 8.7-.4a2.7 2.7 0 0 0 1.9-1.9C23 15.5 23 12 23 12zM10 15.5v-7l6 3.5z"/></svg></a> <a href="https://x.com/7eslenglish" aria-label="X"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h3l-7 8 8 12h-6l-5-7-5 7H3l8-9L3 2h6l4 6z"/></svg></a></div></div><div class="escx-foot__col"><h5>Learn</h5> <a href="https://7esl.com/grammar/">Grammar</a> <a href="https://7esl.com/vocabulary/">Vocabulary</a> <a href="https://7esl.com/idioms/">Idioms</a> <a href="https://7esl.com/phrasal-verbs/">Phrasal Verbs</a> <a href="https://7esl.com/pronunciation/">Pronunciation</a> <a href="https://7esl.com/writing/">Writing</a> <a href="https://7esl.com/courses/">Free Courses</a></div><div class="escx-foot__col"><h5>Courses by level</h5> <a href="https://7esl.com/courses/kindergarten-english/">Kindergarten</a> <a href="https://7esl.com/courses/a1-english/">A1 — Beginner</a> <a href="https://7esl.com/courses/a2-english/">A2 — Elementary</a> <a href="https://7esl.com/courses/b1-english/">B1 — Intermediate</a> <a href="https://7esl.com/courses/b2-english/">B2 — Upper-Int.</a> <a href="https://7esl.com/courses/c1-english/">C1 — Advanced</a> <a href="https://7esl.com/courses/c2-english/">C2 — Mastery</a></div><div class="escx-foot__col"><h5>Tools & Games</h5> <a href="https://7esl.com/tools/">All Tools</a> <a href="https://7esl.com/learning-tools/">Learning Tools</a> <a href="https://7esl.com/writing-tools/">Writing Tools</a> <a href="https://7esl.com/word-tools/">Word Tools</a> <a href="https://7esl.com/teacher-tools/">Teacher Tools</a> <a href="https://7esl.com/picture-vocabulary/">Picture Vocabulary</a> <a href="https://7esl.com/word-games/">Word Games</a> <a href="https://7esl.com/vocabulary-games/">Vocabulary Games</a> <a href="https://7esl.com/games/">All Games</a></div><div class="escx-foot__col"><h5>Tests & Resources <span class="escx-tag escx-tag--hot">HOT</span></h5> <a href="https://7esl.com/english-level-test/">Level Test</a> <a href="https://7esl.com/exams/">Exam Practice</a> <a href="https://7esl.com/tests/">All Tests</a> <a href="https://7esl.com/category/esl-resources/worksheets/">Free Worksheets</a> <a href="https://7esl.com/category/esl-resources/esl-pdfs/">Free PDF Books</a> <a href="https://7esl.com/tutors/">Find a Tutor</a> <a href="https://7esl.com/forum/">Forums</a></div><div class="escx-foot__col"><h5>For Teachers</h5> <a href="https://7esl.com/teacher-tools/">Teacher Tools</a> <a href="https://7esl.com/category/esl-resources/worksheets/">Worksheets</a> <a href="https://7esl.com/category/esl-resources/esl-pdfs/">PDF Books</a> <a href="https://7esl.com/picture-vocabulary/">Picture Vocabulary</a> <a href="https://7esl.com/kids-games/">Kids Games</a> <a href="https://7esl.com/tutor-register/">Become a Tutor</a> <a href="https://7esl.com/signup/"><strong style="color:#cfe0ec">Free account →</strong></a></div></div><div class="escx-foot__bottom"><div class="escx-wrap"><div>© 2026 7ESL. All rights reserved.</div><div class="escx-foot__legal"> <a href="https://7esl.com/about/">About</a> <a href="https://7esl.com/editorial-policy/">Editorial Policy</a> <a href="https://7esl.com/privacy-policy/">Privacy</a> <a href="https://7esl.com/terms-of-service/">Terms</a> <a href="https://7esl.com/contact/">Contact</a></div></div></div></footer><div class="escx-dbg" id="escxDbg"></div><aside class="escx-drawer" id="escxDrawer" aria-label="Mobile menu"><div class="escx-drawer__h"> <a href="https://7esl.com/" class="escx-logo"><img loading="lazy" src="https://7esl.com/wp-content/plugins/7esl-core/assets/images/logo-7esl-dark.svg" alt="7ESL" width="116" height="30"></a> <button class="escx-icbtn" id="escxDclose" style="display:grid" aria-label="Close menu"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6L6 18M6 6l12 12"/></svg></button></div> <details><summary>
894Learn <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="escx-sub"><a href="https://7esl.com/grammar/">Grammar</a><a href="https://7esl.com/vocabulary/">Vocabulary</a><a href="https://7esl.com/idioms/">Idioms</a><a href="https://7esl.com/pronunciation/">Pronunciation</a><a href="https://7esl.com/courses/">Courses</a></div></details> <details><summary>Tests <span class="escx-badge escx-badge--hot">HOT</span><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="escx-sub"><a href="https://7esl.com/english-level-test/">Level Test</a><a href="https://7esl.com/exams/">Exam Practice</a><a href="https://7esl.com/practice/">Practice Tests</a></div></details> <details><summary>Tools <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="escx-sub"><a href="https://7esl.com/tools/">All Tools</a><a href="https://7esl.com/learning-tools/">Learning Tools</a><a href="https://7esl.com/writing-tools/">Writing Tools</a><a href="https://7esl.com/word-tools/">Word Game Tools</a><a href="https://7esl.com/picture-vocabulary/">Picture Vocabulary</a><a href="https://7esl.com/teacher-tools/">Teacher Tools</a><a href="https://7esl.com/how-to-pronounce/">Pronunciation Tools</a><a href="https://7esl.com/spelling-tools/">Spelling Tools</a></div></details> <details><summary>Games <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="escx-sub"><a href="https://7esl.com/word-games/">Word Games</a><a href="https://7esl.com/vocabulary-games/">Vocabulary Games</a><a href="https://7esl.com/grammar-games/">Grammar Games</a><a href="https://7esl.com/kids-games/">Kids Games</a><a href="https://7esl.com/pronunciation-games/">Pronunciation Games</a></div></details> <details data-aud-hide="teacher"><summary>Tutors <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="escx-sub"><a href="https://7esl.com/tutors/">Find a Tutor</a></div></details> <details><summary>For Teachers <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="escx-sub"><a href="https://7esl.com/teacher-tools/">Teacher Tools</a><a href="https://7esl.com/category/esl-resources/worksheets/">Worksheets</a><a href="https://7esl.com/category/esl-resources/esl-pdfs/">PDF Books</a><a href="https://7esl.com/kids-games/">Kids Games</a><a data-aud-hide="learner kid ask none" href="https://7esl.com/tutor-register/">Become a Tutor</a></div></details> <details><summary>Download <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#888" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></summary><div class="escx-sub"><a href="https://7esl.com/app/">Mobile App</a><a href="https://7esl.com/category/esl-resources/worksheets/">Worksheets</a><a href="https://7esl.com/category/esl-resources/esl-pdfs/">PDF Books</a></div></details> <details><summary>Forums</summary><div class="escx-sub"><a href="https://7esl.com/forum/">Community Forum</a></div></details><div class="escx-drawer__btns"> <a class="escx-btn escx-btn--ghost" href="https://7esl.com/login/">Login</a> <a class="escx-btn escx-btn--pri" href="https://7esl.com/signup/">Sign up free</a></div></aside>
894<script type="speculationrules">{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/generatepress/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script>
894
894<script>function isOldIOSDevice() { 895 const userAgent = navigator.userAgent || navigator.vendor || window.opera; 896 897 // Check if it's an iOS device 898 const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream; 899 900 if (!isIOS) return false; 901 902 // Extract iOS version from userAgent 903 const match = userAgent.match(/OS (\d+)_/); 904 if (match && match.length > 1) { 905 const majorVersion = parseInt(match[1], 10); 906 907 // Example: Consider iOS 12 and below as old 908 return majorVersion <= 12; 909 } 910 911 // If version not found, assume not old 912 return false; 913 } 914 if (isOldIOSDevice()) { 915 document.addEventListener('DOMContentLoaded', function() { 916 setTimeout(() => { 917 document.querySelectorAll('audio:not(.plyr audio)').forEach(function(audio, index) { 918 audio.setAttribute('controls', '') 919 }); 920 }, 3000); 921 }); 922 } 923 // ios old devices</script>
923 <svg width="0" height="0" class="h5ap_svg_hidden" style="display: none;"> <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 511.997 511.997" id="exchange"> <path d="M467.938 87.164L387.063 5.652c-7.438-7.495-19.531-7.54-27.02-.108s-7.54 19.525-.108 27.014l67.471 68.006-67.42 67.42c-7.464 7.457-7.464 19.557 0 27.014 3.732 3.732 8.616 5.598 13.507 5.598s9.781-1.866 13.513-5.591l80.876-80.876c7.443-7.44 7.463-19.495.056-26.965z"></path> <path d="M455.005 81.509H56.995c-10.552 0-19.104 8.552-19.104 19.104v147.741c0 10.552 8.552 19.104 19.104 19.104s19.104-8.552 19.104-19.104V119.718h378.905c10.552 0 19.104-8.552 19.104-19.104.001-10.552-8.551-19.105-19.103-19.105zM83.964 411.431l67.42-67.413c7.457-7.457 7.464-19.55 0-27.014-7.463-7.464-19.563-7.464-27.02 0l-80.876 80.869c-7.444 7.438-7.47 19.493-.057 26.963l80.876 81.512a19.064 19.064 0 0013.564 5.649c4.865 0 9.731-1.847 13.456-5.54 7.489-7.432 7.54-19.525.108-27.02l-67.471-68.006z"></path> <path d="M454.368 238.166c-10.552 0-19.104 8.552-19.104 19.104v135.005H56.995c-10.552 0-19.104 8.552-19.104 19.104s8.552 19.104 19.104 19.104h397.38c10.552 0 19.104-8.552 19.098-19.104V257.271c-.001-10.552-8.553-19.105-19.105-19.105z"></path> </symbol> </svg> <svg width="0" height="0" class="h5ap_svg_hidden" style="display: none;"> <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 477.88 477.88" id="shuffle"> <path d="M472.897 124.269a.892.892 0 01-.03-.031l-.017.017-68.267-68.267c-6.78-6.548-17.584-6.36-24.132.42-6.388 6.614-6.388 17.099 0 23.713l39.151 39.151h-95.334c-65.948.075-119.391 53.518-119.467 119.467-.056 47.105-38.228 85.277-85.333 85.333h-102.4C7.641 324.072 0 331.713 0 341.139s7.641 17.067 17.067 17.067h102.4c65.948-.075 119.391-53.518 119.467-119.467.056-47.105 38.228-85.277 85.333-85.333h95.334l-39.134 39.134c-6.78 6.548-6.968 17.353-.419 24.132 6.548 6.78 17.353 6.968 24.132.419.142-.137.282-.277.419-.419l68.267-68.267c6.674-6.657 6.687-17.463.031-24.136z"></path> <path d="M472.897 329.069l-.03-.03-.017.017-68.267-68.267c-6.78-6.548-17.584-6.36-24.132.42-6.388 6.614-6.388 17.099 0 23.712l39.151 39.151h-95.334a85.209 85.209 0 01-56.9-21.726c-7.081-6.222-17.864-5.525-24.086 1.555-6.14 6.988-5.553 17.605 1.319 23.874a119.28 119.28 0 0079.667 30.43h95.334l-39.134 39.134c-6.78 6.548-6.968 17.352-.42 24.132 6.548 6.78 17.352 6.968 24.132.42.142-.138.282-.277.42-.42l68.267-68.267c6.673-6.656 6.686-17.462.03-24.135zM199.134 149.702a119.28 119.28 0 00-79.667-30.43h-102.4C7.641 119.272 0 126.913 0 136.339s7.641 17.067 17.067 17.067h102.4a85.209 85.209 0 0156.9 21.726c7.081 6.222 17.864 5.525 24.086-1.555 6.14-6.989 5.553-17.606-1.319-23.875z"></path> </symbol> </svg>
923<script>const single_player = document.querySelectorAll(".h5ap_single_button"); 924 single_player.forEach(item => { 925 const audio = item.querySelector("audio"); 926 audio.volume = 0.6; 927 item.querySelector('.play').addEventListener("click", function() { 928 single_player.forEach(player => { 929 player.querySelector("audio")?.pause(); 930 }) 931 setTimeout(() => { 932 audio.currentTime = 0; 933 audio.play(); 934 }, 0); 935 936 }); 937 938 item.querySelector('.pause').style.display = 'none'; 939 item.querySelector('.pause').addEventListener("click", function() { 940 audio.pause(); 941 }); 942 943 audio.addEventListener("ended", () => { 944 item.querySelector(".play").style.display = 'inline-block'; 945 item.querySelector(".pause").style.display = 'none'; 946 }); 947 948 audio.addEventListener("pause", () => { 949 item.querySelector(".play").style.display = 'inline-block'; 950 item.querySelector(".pause").style.display = 'none'; 951 }); 952 audio.addEventListener("play", () => { 953 item.querySelector(".play").style.display = 'none'; 954 item.querySelector(".pause").style.display = 'inline-block'; 955 }); 956 957 })</script>
957
957<script id="generate-a11y">!function(){"use strict";if("querySelector"in document&&"addEventListener"in window){var e=document.body;e.addEventListener("pointerdown",(function(){e.classList.add("using-mouse")}),{passive:!0}),e.addEventListener("keydown",(function(){e.classList.remove("using-mouse")}),{passive:!0})}}();</script>
957
957<script id="esl-membership-js-after">(function(){ 958 var root=document.querySelector('.esl-pricing'); 959 function bill(){var b=document.querySelector('.esl-bill.active');return b?b.getAttribute('data-interval'):'month';} 960 // billing toggle 961 document.querySelectorAll('.esl-bill').forEach(function(btn){ 962 btn.addEventListener('click',function(){ 963 document.querySelectorAll('.esl-bill').forEach(function(x){x.classList.remove('active');}); 964 btn.classList.add('active'); 965 var iv=bill(); 966 document.querySelectorAll('.esl-price .amt').forEach(function(a){ 967 var v=iv==='year'?a.getAttribute('data-y'):a.getAttribute('data-m'); 968 if(v){a.textContent='$'+v;} 969 }); 970 document.querySelectorAll('.esl-price .per').forEach(function(p){p.textContent=iv==='year'?'/yr':'/mo';}); 971 /* v1.9.48 â thẻ gói ghế tá»± tÃnh giá cá»§a nó (sá» ghế à giá ghế), nên nó 972 phải ÄÆ°á»£c báo Äá» tÃnh lại. Má»t sá»± kiá»n, không phải má»t biến toà n cục. */ 973 document.dispatchEvent(new CustomEvent('esl-bill')); 974 syncBuy(iv); 975 }); 976 }); 977 /* v1.7.0 â hide a Buy button whose (plan x interval) has no gateway id on 978 this install. Same rule, same data-combos attribute and same mechanism as 979 the PayPal button below, so there is one way this works, not two. A 980 button with no data-combos (nothing configured to filter on) is always 981 left alone: this must never be able to hide a CTA it does not understand. */ 982 function syncBuy(iv){ 983 document.querySelectorAll('.esl-buy[data-combos]').forEach(function(b){ 984 var combos=(b.getAttribute('data-combos')||'').split(','); 985 var want=b.getAttribute('data-plan')+'_'+iv; 986 b.hidden=(combos.indexOf(want)===-1); 987 }); 988 } 989 syncBuy(bill()); 990 if(!root) return; 991 var rest=root.getAttribute('data-rest'),nonce=root.getAttribute('data-nonce'); 992 var logged=root.getAttribute('data-logged')==='1',login=root.getAttribute('data-login'); 993 var msg=root.querySelector('.esl-pay-msg'),choice=root.querySelector('.esl-pay-choice'); 994 var pending=null; 995 function post(path,body){ 996 return fetch(rest+path,{method:'POST',headers:{'Content-Type':'application/json','X-WP-Nonce':nonce},body:JSON.stringify(body||{})}).then(function(r){return r.json();}); 997 } 998 root.querySelectorAll('.esl-buy').forEach(function(btn){ 999 btn.addEventListener('click',function(){ 1000 if(!logged){window.location.href=login;return;} 1001 pending={plan:btn.getAttribute('data-plan'),interval:bill()}; 1002 /* v1.9.47 â nếu kỳ hạn Äang chá»n KHÃNG ÄÆ°á»£c cấu hình cho gói nà y thì 1003 Äá»i sang kỳ hạn còn lại thay vì Äá» ngưá»i ta bấm rá»i nháºn "Price not 1004 configured". Trưá»ng hợp tháºt và rất dá» xảy ra: anh Äức tạo má»i giá 1005 tháng cho Teacher Pro, còn nút gạt nÄm thì Äang báºt vì gói Pro có 1006 giá nÄm. */ 1007 var myCombos=(btn.getAttribute('data-combos')||'').split(','); 1008 if(myCombos.length&&myCombos[0]!==''&&myCombos.indexOf(pending.plan+'_'+pending.interval)===-1){ 1009 var other=pending.interval==='year'?'month':'year'; 1010 if(myCombos.indexOf(pending.plan+'_'+other)!==-1)pending.interval=other; 1011 } 1012 /* Gói ghế gá»i kèm sá» ghế. Äá»c từ CHÃNH ô ngưá»i dùng vừa 1013 gõ, không từ má»t bản sao â hai nguá»n thì cái sai lại là cái ngưá»i 1014 ta trả tiá»n. Máy chá»§ vẫn kẹp lại lần nữa; á» Äây chá» Äá» con sá» Äi 1015 Äúng chá». */ 1016 var seatsId=btn.getAttribute('data-seats-from'); 1017 if(seatsId){ 1018 var si=document.getElementById(seatsId); 1019 var sv=si?parseInt(si.value,10):0; 1020 if(sv>0)pending.seats=sv; 1021 } 1022 // Show PayPal only for combinations that are actually configured on 1023 // this site â otherwise the visitor taps it and PayPal answers 1024 // "Plan not configured". 1025 var ppBtn=root.querySelector('.esl-pay-paypal'); 1026 if(ppBtn){ 1027 var combos=(ppBtn.getAttribute('data-combos')||'').split(','); 1028 var want=pending.plan+'_'+pending.interval; 1029 ppBtn.hidden=(combos.indexOf(want)===-1); 1030 } 1031 choice.style.display='block';msg.textContent=''; 1032 choice.scrollIntoView({behavior:'smooth',block:'center'}); 1033 }); 1034 }); 1035 var cancel=root.querySelector('.esl-pay-cancel'); 1036 if(cancel)cancel.addEventListener('click',function(){choice.style.display='none';pending=null;}); 1037 function go(gw){ 1038 if(!pending)return; 1039 msg.textContent='Redirecting to secure checkoutâ¦'; 1040 post('/'+gw+'/checkout',pending).then(function(res){ 1041 if(res&&res.url){window.location.href=res.url;} 1042 else{msg.textContent=(res&&res.message)?res.message:'Checkout is not available yet. Please try the other method.';} 1043 }).catch(function(){msg.textContent='Network error. Please try again.';}); 1044 } 1045 // v1.6.07: audience switch. A CSS swap on one attribute â no reflow of the 1046 // price table, no second request, no second URL. 1047 function setAud(a,remember){ 1048 if(a!=='learner'&&a!=='teacher')return; 1049 root.setAttribute('data-audience',a); 1050 root.querySelectorAll('.esl-aud').forEach(function(x){ 1051 var on=x.getAttribute('data-aud')===a; 1052 x.classList.toggle('active',on); 1053 x.setAttribute('aria-pressed',on?'true':'false'); 1054 }); 1055 // Headlines are single-copy in the DOM (see the PHP above), so swap text. 1056 root.querySelectorAll('[data-aud-h1],[data-aud-pro]').forEach(function(h){ 1057 var t=h.getAttribute('data-'+a); 1058 if(t)h.textContent=t; 1059 }); 1060 /* v1.9.48 â và cùng lẽ Äó vá»i KHOà GÃI. Thẻ Pro bán hai sản phẩm Stripe 1061 khác nhau tuỳ ngưá»i xem; nếu chá» Äá»i chữ mà không Äá»i khoá thì má»t giáo 1062 viên bấm "Choose Pro" và tiá»n rÆ¡i và o sản phẩm cá»§a luá»ng ngưá»i há»c â 1063 Äúng cái viá»c tách sản phẩm sinh ra Äá» tránh. Äá»i cả data-combos, nếu 1064 không phép lá»c PayPal và phép Äá»i kỳ hạn sẽ nhìn và o danh sách cá»§a gói 1065 kia. */ 1066 root.querySelectorAll('[data-plan-learner]').forEach(function(b){ 1067 var p=b.getAttribute('data-plan-'+a); 1068 if(p)b.setAttribute('data-plan',p); 1069 var c=b.getAttribute('data-combos-'+a); 1070 if(c!==null)b.setAttribute('data-combos',c); 1071 }); 1072 // v1.9.46 â cung le do voi ANH: mot the trong DOM, doi nguon. Hai the 1073 // roi an mot bang CSS la tai ve hai anh va vut di mot. 1074 // <source> dung srcset, <img> dung src â sai thuoc tinh thi khong bao 1075 // loi, chi la anh khong bao gio doi. 1076 root.querySelectorAll('[data-aud-src]').forEach(function(m){ 1077 var u=m.getAttribute('data-'+a); 1078 if(!u)return; 1079 if(m.tagName==='SOURCE')m.setAttribute('srcset',u); 1080 else m.setAttribute('src',u); 1081 }); 1082 if(remember){try{localStorage.setItem('esl_aud',a);}catch(e){}} 1083 }
1084 root.querySelectorAll('.esl-aud').forEach(function(btn){ 1085 btn.addEventListener('click',function(){ 1086 var want=btn.getAttribute('data-aud'); 1087 if(want&&root.getAttribute('data-audience')!==want)setAud(want,true); 1088 }); 1089 }); 1090 // Remembered choice, but only when the server was guessing. A signed-in 1091 // user's own answer at sign-up always wins over an old click. 1092 if(root.getAttribute('data-aud-src')==='guess'){ 1093 var saved=null;try{saved=localStorage.getItem('esl_aud');}catch(e){} 1094 if(saved&&saved!==root.getAttribute('data-audience'))setAud(saved,false); 1095 } 1096 var ps=root.querySelector('.esl-pay-stripe'),pp=root.querySelector('.esl-pay-paypal'); 1097 if(ps)ps.addEventListener('click',function(){go('stripe');}); 1098 if(pp)pp.addEventListener('click',function(){go('paypal');}); 1099 var mb=root.querySelector('.esl-manage-billing'); 1100 if(mb)mb.addEventListener('click',function(e){e.preventDefault();post('/stripe/portal',{}).then(function(r){if(r&&r.url)window.location.href=r.url;});}); 1101 // Auto-start when arriving as ?plan=basic (e.g. straight after signup). 1102 var qp=new URLSearchParams(window.location.search),wantPlan=qp.get('plan'); 1103 if(wantPlan&&logged){var b=root.querySelector('.esl-buy[data-plan="'+wantPlan+'"]');if(b)b.click();} 1104})(); 1105//# sourceURL=esl-membership-js-after</script>
1105
1105<script id="generate-menu-js-before">var generatepressMenu = {"toggleOpenedSubMenus":true,"openSubMenuLabel":"Open Sub-Menu","closeSubMenuLabel":"Close Sub-Menu"}; 1106//# sourceURL=generate-menu-js-before</script>
1106
1106<script id="generate-back-to-top-js-before">var generatepressBackToTop = {"smooth":true}; 1107//# sourceURL=generate-back-to-top-js-before</script>
1107
1107<script id="breeze-lazy-js-after">document.addEventListener("DOMContentLoaded", function () { 1108 if ( "function" !== typeof window.LazyLoad && "function" !== typeof LazyLoad ) { 1109 return; 1110 } 1111 1112 var breezeLazyLoad = window.LazyLoad || LazyLoad; 1113 1114 window.lazyLoadInstance = new breezeLazyLoad({ 1115 elements_selector: ".br-lazy", 1116 data_src: "breeze", 1117 data_srcset: "brsrcset", 1118 data_sizes: "brsizes", 1119 class_loaded: "br-loaded", 1120 threshold: 300, 1121 }); 1122 }); 1123//# sourceURL=breeze-lazy-js-after</script>
1123
1123<script id="esl-tests-js-js-extra">var eslTests = {"ajaxUrl":"https://7esl.com/wp-admin/admin-ajax.php","restUrl":"https://7esl.com/wp-json/esl/v1/","nonce":"cd616dd652","userId":"0","is_paid":"0","profileUrl":"https://7esl.com/profile/"}; 1124//# sourceURL=esl-tests-js-js-extra</script>
1124
1124<script id="esl-article-tabs-js-js-extra">var eslArticleTabs = {"context":"category","contextId":"37395","postId":"0","testId":"894","xpReward":"5","testTitle":"Articles Practice Test (A1-B2) \u2014 Grammar Exercises with Answers","loggedIn":"","passScore":"60","timeLimit":"600"}; 1125//# sourceURL=esl-article-tabs-js-js-extra</script>
1125
1125<script id="sevenesl-sidebar-search-js-extra">var seveneslSidebarSearch = {"ajaxUrl":"https://7esl.com/wp-admin/admin-ajax.php","nonce":"be959ec6b5","homeUrl":"https://7esl.com/"}; 1126//# sourceURL=sevenesl-sidebar-search-js-extra</script>
1126
1126<script id="sevenesl-helpful-vote-js-extra">var seveneslHelpfulVote = {"ajaxUrl":"https://7esl.com/wp-admin/admin-ajax.php","nonce":"d19eea5a4d"}; 1127//# sourceURL=sevenesl-helpful-vote-js-extra</script>
1127
1127<script type="text/javascript">(function (undefined) {let scriptOptions={"_localizedStrings":{"redirect_overlay_title":"Hold On","redirect_overlay_text":"You are being redirected to another page,<br>it may take a few seconds.","webview_notification_text":"The selected provider doesn't support embedded browsers!"},"_targetWindow":"prefer-popup","_redirectOverlay":"overlay-with-spinner-and-message","_unsupportedWebviewBehavior":""}; 1128/** 1129 * Used when Cross-Origin-Opener-Policy blocked the access to the opener. We can't have a reference of the opened windows, so we should attempt to refresh only the windows that has opened popups. 1130 */ 1131window._nslHasOpenedPopup = false; 1132window._nslWebViewNoticeElement = null; 1133 1134window.NSLPopup = function (url, title, w, h) { 1135 1136 /** 1137 * Cross-Origin-Opener-Policy blocked the access to the opener 1138 */ 1139 if (typeof BroadcastChannel === "function") { 1140 const _nslLoginBroadCastChannel = new BroadcastChannel('nsl_login_broadcast_channel'); 1141 _nslLoginBroadCastChannel.onmessage = (event) => { 1142 if (window?._nslHasOpenedPopup && event.data?.action === 'redirect') { 1143 window._nslHasOpenedPopup = false; 1144 1145 const url = event.data?.href; 1146 _nslLoginBroadCastChannel.close(); 1147 if (typeof window.nslRedirect === 'function') { 1148 window.nslRedirect(url); 1149 } else { 1150 window.opener.location = url; 1151 } 1152 } 1153 }; 1154 } 1155 1156 const userAgent = navigator.userAgent, 1157 mobile = function () { 1158 return /\b(iPhone|iP[ao]d)/.test(userAgent) || 1159 /\b(iP[ao]d)/.test(userAgent) || 1160 /Android/i.test(userAgent) || 1161 /Mobile/i.test(userAgent); 1162 }, 1163 screenX = window.screenX !== undefined ? window.screenX : window.screenLeft, 1164 screenY = window.screenY !== undefined ? window.screenY : window.screenTop, 1165 outerWidth = window.outerWidth !== undefined ? window.outerWidth : document.documentElement.clientWidth, 1166 outerHeight = window.outerHeight !== undefined ? window.outerHeight : document.documentElement.clientHeight - 22, 1167 targetWidth = mobile() ? null : w, 1168 targetHeight = mobile() ? null : h, 1169 left = parseInt(screenX + (outerWidth - targetWidth) / 2, 10), 1170 right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10), 1171 features = []; 1172 if (targetWidth !== null) { 1173 features.push('width=' + targetWidth); 1174 } 1175 if (targetHeight !== null) { 1176 features.push('height=' + targetHeight); 1177 } 1178 features.push('left=' + left); 1179 features.push('top=' + right); 1180 features.push('scrollbars=1'); 1181 1182 const newWindow = window.open(url, title, features.join(',')); 1183 1184 if (window.focus) { 1185 newWindow.focus(); 1186 } 1187 1188 window._nslHasOpenedPopup = true; 1189 1190 return newWindow; 1191}; 1192 1193let isWebView = null; 1194 1195function checkWebView() { 1196 if (isWebView === null) { 1197 function _detectOS(ua) { 1198 if (/Android/.test(ua)) { 1199 return "Android"; 1200 } else if (/iPhone|iPad|iPod/.test(ua)) { 1201 return "iOS"; 1202 } else if (/Windows/.test(ua)) { 1203 return "Windows"; 1204 } else if (/Mac OS X/.test(ua)) { 1205 return "Mac"; 1206 } else if (/CrOS/.test(ua)) { 1207 return "Chrome OS"; 1208 } else if (/Firefox/.test(ua)) { 1209 return "Firefox OS"; 1210 } 1211 return ""; 1212 } 1213 1214 function _detectBrowser(ua) { 1215 let android = /Android/.test(ua); 1216 1217 if (/Opera Mini/.test(ua) || / OPR/.test(ua) || / OPT/.test(ua)) { 1218 return "Opera"; 1219 } else if (/CriOS/.test(ua)) { 1220 return "Chrome for iOS"; 1221 } else if (/Edge/.test(ua)) { 1222 return "Edge"; 1223 } else if (android && /Silk\//.test(ua)) { 1224 return "Silk"; 1225 } else if (/Chrome/.test(ua)) { 1226 return "Chrome"; 1227 } else if (/Firefox/.test(ua)) { 1228 return "Firefox"; 1229 } else if (android) { 1230 return "AOSP"; 1231 } else if (/MSIE|Trident/.test(ua)) { 1232 return "IE"; 1233 } else if (/Safari\//.test(ua)) { 1234 return "Safari"; 1235 }
1235 else if (/AppleWebKit/.test(ua)) { 1236 return "WebKit"; 1237 } 1238 return ""; 1239 } 1240 1241 function _detectBrowserVersion(ua, browser) { 1242 if (browser === "Opera") { 1243 return /Opera Mini/.test(ua) ? _getVersion(ua, "Opera Mini/") : 1244 / OPR/.test(ua) ? _getVersion(ua, " OPR/") : 1245 _getVersion(ua, " OPT/"); 1246 } else if (browser === "Chrome for iOS") { 1247 return _getVersion(ua, "CriOS/"); 1248 } else if (browser === "Edge") { 1249 return _getVersion(ua, "Edge/"); 1250 } else if (browser === "Chrome") { 1251 return _getVersion(ua, "Chrome/"); 1252 } else if (browser === "Firefox") { 1253 return _getVersion(ua, "Firefox/"); 1254 } else if (browser === "Silk") { 1255 return _getVersion(ua, "Silk/"); 1256 } else if (browser === "AOSP") { 1257 return _getVersion(ua, "Version/"); 1258 } else if (browser === "IE") { 1259 return /IEMobile/.test(ua) ? _getVersion(ua, "IEMobile/") : 1260 /MSIE/.test(ua) ? _getVersion(ua, "MSIE ") 1261 : 1262 _getVersion(ua, "rv:"); 1263 } else if (browser === "Safari") { 1264 return _getVersion(ua, "Version/"); 1265 } else if (browser === "WebKit") { 1266 return _getVersion(ua, "WebKit/"); 1267 } 1268 return "0.0.0"; 1269 } 1270 1271 function _getVersion(ua, token) { 1272 try { 1273 return _normalizeSemverString(ua.split(token)[1].trim().split(/[^\w\.]/)[0]); 1274 } catch (o_O) { 1275 } 1276 return "0.0.0"; 1277 } 1278 1279 function _normalizeSemverString(version) { 1280 const ary = version.split(/[\._]/); 1281 return (parseInt(ary[0], 10) || 0) + "." + 1282 (parseInt(ary[1], 10) || 0) + "." + 1283 (parseInt(ary[2], 10) || 0); 1284 } 1285 1286 function _isWebView(ua, os, browser, version, options) { 1287 switch (os + browser) { 1288 case "iOSSafari": 1289 return false; 1290 case "iOSWebKit": 1291 return _isWebView_iOS(options); 1292 case "AndroidAOSP": 1293 return false; 1294 case "AndroidChrome": 1295 return parseFloat(version) >= 42 ? /; wv/.test(ua) : /\d{2}\.0\.0/.test(version) ? true : _isWebView_Android(options); 1296 } 1297 return false; 1298 } 1299 1300 function _isWebView_iOS(options) { 1301 const document = (window["document"] || {}); 1302 1303 if ("WEB_VIEW" in options) { 1304 return options["WEB_VIEW"]; 1305 } 1306 return !("fullscreenEnabled" in document || "webkitFullscreenEnabled" in document || false); 1307 } 1308 1309 function _isWebView_Android(options) { 1310 if ("WEB_VIEW" in options) { 1311 return options["WEB_VIEW"]; 1312 } 1313 return !("requestFileSystem" in window || "webkitRequestFileSystem" in window || false); 1314 } 1315 1316 const options = {}, 1317 nav = window.navigator || {}, 1318 ua = nav.userAgent || "", 1319 os = _detectOS(ua), 1320 browser = _detectBrowser(ua), 1321 browserVersion = _detectBrowserVersion(ua, browser); 1322 1323 isWebView = _isWebView(ua, os, browser, browserVersion, options); 1324 } 1325 1326 return isWebView; 1327} 1328 1329function isAllowedWebViewForUserAgent(provider) { 1330 const facebookAllowedWebViews = [ 1331 'Instagram', 1332 'FBAV', 1333 'FBAN' 1334 ]; 1335 let whitelist = []; 1336 1337 if (provider && provider === 'facebook') { 1338 whitelist = facebookAllowedWebViews; 1339 } 1340 1341 const nav = window.navigator || {}, 1342 ua = nav.userAgent || ""; 1343 1344 if (whitelist.length && ua.match(new RegExp(whitelist.join('|')))) { 1345 return true; 1346 } 1347 1348 return false; 1349} 1350 1351function disableButtonInWebView(providerButtonElement) { 1352 if (providerButtonElement) { 1353 providerButtonElement.classList.add('nsl-disabled-provider'); 1354 providerButtonElement.setAttribute('href', '#'); 1355 1356 providerButtonElement.addEventListener('pointerdown', (e) => { 1357 const closeNotice = function () { 1358 if (window._nslWebViewNoticeElement) { 1359 window._nslWebViewNoticeElement.remove(); 1360 window._nslWebViewNoticeElement = null; 1361 } 1362 }; 1363 1364 closeNotice(); 1365 1366 window._nslWebViewNoticeElement = document.createElement('div'); 1367 window._nslWebViewNoticeElement.id = "nsl-notices-fallback"; 1368 window._nslWebViewNoticeElement.role = 'alert'; 1369 window._nslWebViewNoticeElement.ariaLive = 'assertive'; 1370 window._nslWebViewNoticeElement.ariaAtomic = 'true'; 1371 1372 window._nslWebViewNoticeElement.addEventListener('pointerdown', closeNotice); 1373 1374 window._nslWebViewNoticeElement.addEventListener('keydown', function (e) { 1375 if (e.key === 'Enter') { 1376 e.preventDefault(); 1377 closeNotice(); 1378 } 1379 }); 1380 const webviewNoticeHTML = '<div class="error"><p>' + scriptOptions._localizedStrings.webview_notification_text + '</p></div>'; 1381 1382 window._nslWebViewNoticeElement.insertAdjacentHTML("afterbegin", webviewNoticeHTML); 1383 document.body.appendChild(window._nslWebViewNoticeElement); 1384 }); 1385 } 1386 1387} 1388 1389window._nslDOMReady(function () { 1390 1391 window.nslRedirect = function (url) { 1392 if (scriptOptions._redirectOverlay) {
1393 const overlay = document.createElement('div'); 1394 overlay.id = "nsl-redirect-overlay"; 1395 let overlayHTML = ''; 1396 const overlayContainer = "<div id='nsl-redirect-overlay-container'>", 1397 overlayContainerClose = "</div>", 1398 overlaySpinner = "<div id='nsl-redirect-overlay-spinner'></div>", 1399 overlayTitle = "<p id='nsl-redirect-overlay-title'>" + scriptOptions._localizedStrings.redirect_overlay_title + "</p>", 1400 overlayText = "<p id='nsl-redirect-overlay-text'>" + scriptOptions._localizedStrings.redirect_overlay_text + "</p>"; 1401 1402 switch (scriptOptions._redirectOverlay) { 1403 case "overlay-only": 1404 break; 1405 case "overlay-with-spinner": 1406 overlayHTML = overlayContainer + overlaySpinner + overlayContainerClose; 1407 break; 1408 default: 1409 overlayHTML = overlayContainer + overlaySpinner + overlayTitle + overlayText + overlayContainerClose; 1410 break; 1411 } 1412 1413 overlay.insertAdjacentHTML("afterbegin", overlayHTML); 1414 document.body.appendChild(overlay); 1415 } 1416 1417 window.location = url; 1418 }; 1419 1420 let targetWindow = scriptOptions._targetWindow || 'prefer-popup', 1421 lastPopup = false; 1422 1423 1424 document.addEventListener('click', function (e) { 1425 if (e.target) { 1426 const buttonLinkElement = e.target.closest('a[data-plugin="nsl"][data-action="connect"]') || e.target.closest('a[data-plugin="nsl"][data-action="link"]'); 1427 if (buttonLinkElement) { 1428 if (lastPopup && !lastPopup.closed) { 1429 e.preventDefault(); 1430 lastPopup.focus(); 1431 } else { 1432 1433 let href = buttonLinkElement.href, 1434 success = false; 1435 if (href.indexOf('?') !== -1) { 1436 href += '&'; 1437 } else { 1438 href += '?'; 1439 } 1440 1441 const redirectTo = buttonLinkElement.dataset.redirect; 1442 if (redirectTo === 'current') { 1443 href += 'redirect=' + encodeURIComponent(window.location.href) + '&'; 1444 } else if (redirectTo && redirectTo !== '') { 1445 href += 'redirect=' + encodeURIComponent(redirectTo) + '&'; 1446 } 1447 1448 if (targetWindow !== 'prefer-same-window' && checkWebView()) { 1449 targetWindow = 'prefer-same-window'; 1450 } 1451 1452 if (targetWindow === 'prefer-popup') { 1453 lastPopup = NSLPopup(href + 'display=popup', 'nsl-social-connect', buttonLinkElement.dataset.popupwidth, buttonLinkElement.dataset.popupheight); 1454 if (lastPopup) { 1455 success = true; 1456 e.preventDefault(); 1457 } 1458 } else if (targetWindow === 'prefer-new-tab') { 1459 const newTab = window.open(href + 'display=popup', '_blank'); 1460 if (newTab) { 1461 if (window.focus) { 1462 newTab.focus(); 1463 } 1464 success = true; 1465 window._nslHasOpenedPopup = true; 1466 e.preventDefault(); 1467 } 1468 } 1469 1470 if (!success) { 1471 window.location = href; 1472 e.preventDefault(); 1473 } 1474 } 1475 } 1476 } 1477 }); 1478 1479 let buttonCountChanged = false; 1480 1481 const googleLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="google"]'); 1482 if (googleLoginButtons.length && checkWebView()) { 1483 googleLoginButtons.forEach(function (googleLoginButton) { 1484 if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') { 1485 disableButtonInWebView(googleLoginButton); 1486 } else { 1487 googleLoginButton.remove(); 1488 buttonCountChanged = true; 1489 } 1490 }); 1491 } 1492 1493 const facebookLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="facebook"]'); 1494 if (facebookLoginButtons.length && checkWebView() && /Android/.test(window.navigator.userAgent) && !isAllowedWebViewForUserAgent('facebook')) { 1495 facebookLoginButtons.forEach(function (facebookLoginButton) { 1496 if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') { 1497 disableButtonInWebView(facebookLoginButton); 1498 } else { 1499 facebookLoginButton.remove(); 1500 buttonCountChanged = true; 1501 } 1502 }); 1503 } 1504 1505 const separators = document.querySelectorAll('div.nsl-separator'); 1506 if (buttonCountChanged && separators.length) {
1507 separators.forEach(function (separator) { 1508 const separatorParentNode = separator.parentNode; 1509 if (separatorParentNode) { 1510 const separatorButtonContainer = separatorParentNode.querySelector('div.nsl-container-buttons'); 1511 if (separatorButtonContainer && !separatorButtonContainer.hasChildNodes()) { 1512 separator.remove(); 1513 } 1514 } 1515 }) 1516 } 1517});})();</script>
1517<div id="sevenesl-search-modal" class="sevenesl-search-modal" hidden aria-hidden="true"><div class="sevenesl-search-modal__dialog" role="dialog" aria-modal="true" aria-labelledby="sevenesl-search-modal-title"> <button class="sevenesl-search-modal__close" data-sevenesl-search-close aria-label="Close search popup"> <span aria-hidden="true">Ã</span> </button><div class="sevenesl-search-modal__header"><div class="sevenesl-search-modal__heading"><p class="sevenesl-search-modal__label">Search 7ESL</p><h2 id="sevenesl-search-modal-title">Find the right article faster</h2></div><form class="sevenesl-search-modal__form" role="search" method="get" action="https://7esl.com/"> <span class="sevenesl-search-modal__search-icon" aria-hidden="true"> <svg viewBox="0 0 24 24" focusable="false" aria-hidden="true"><path d="M10.5 4.75a5.75 5.75 0 1 0 0 11.5a5.75 5.75 0 0 0 0-11.5Zm0-1.5a7.25 7.25 0 1 1 0 14.5a7.25 7.25 0 0 1 0-14.5Zm6.23 12.42l3.52 3.52a.75.75 0 1 1-1.06 1.06l-3.52-3.52a.75.75 0 1 1 1.06-1.06Z" fill="currentColor"></path></svg> </span> <input type="search" class="sevenesl-search-modal__input" name="s" placeholder="Search articles, grammar, vocabulary..." autocomplete="off" /> <button type="submit" class="sevenesl-search-modal__submit">Search</button></form></div><div class="sevenesl-search-modal__summary"></div><div class="sevenesl-search-modal__status"></div><div class="sevenesl-search-modal__results"></div></div></div>
1517<script type="text/javascript">window.addEventListener("DOMContentLoaded",(e=>{document.querySelectorAll('img[loading="lazy"]').forEach((e=>{e.getBoundingClientRect().top<=window.innerHeight&&(e.loading="eager")}))}));</script>
1517
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-functions-js-sticky.min-243a12dcd23b.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-assets-js-thinklab-7afb6f893f72.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-assets-js-menu.min-826f0eef6b5f.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-assets-js-back-to-top.min-888dfb066496.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-js-js-front-end-breeze-lazy-load.min-396a30523880.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-tests-assets-tests-b5cb7b06fc8e.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-assets-js-toc-c4a67bd4f5d3.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-tests-assets-esl-sounds-c2ac284eee28.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-tests-assets-article-tabs-b45bfbf528f1.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-assets-js-site-chrome-7fff92bb9ee3.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-assets-js-sidebar-search-1483100a9f2b.js?ver=1790251294"></script>
1517<script type="text/javascript" src="https://7esl.com/wp-content/cache/breeze-minification/js/breeze_category-grammar-articles-1-112735-assets-js-helpful-vote-3b9a9ab89cab.js?ver=1790251294"></script>
1517</body></html> 1518<!-- Cache served by breeze CACHE - Last modified: Thu, 24 Sep 2026 12:01:34 GMT -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.