<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tamer</title>
    <description>The latest articles on DEV Community by Tamer (@akatamer).</description>
    <link>https://dev.to/akatamer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F112178%2Fefc79ee2-ceb8-4c17-9edd-a9d1de7a09b9.jpeg</url>
      <title>DEV Community: Tamer</title>
      <link>https://dev.to/akatamer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akatamer"/>
    <language>en</language>
    <item>
      <title>Web UI: Innovating Without Losing the User</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Mon, 09 Jun 2025 15:27:05 +0000</pubDate>
      <link>https://dev.to/akatamer/web-ui-innovating-without-losing-the-user-31bp</link>
      <guid>https://dev.to/akatamer/web-ui-innovating-without-losing-the-user-31bp</guid>
      <description>&lt;p&gt;The evolution of web interfaces is a story of continuous changes, both technical and psychological. From the early ’90s interfaces, the drive has always been toward richer experiences. Today, in the CSS “golden era” we have incredibly powerful tools to create seamless experiences. Yet, this very drive for innovation often clashes with an unexpected obstacle: user resistance to change. This essay explores that paradox.&lt;/p&gt;

&lt;p&gt;It was the ’90s, and we all remember those interfaces: many ideas, few conventions, and screens resembling TV sets. CSS was the great protagonist of the graphical revolution—a tool as verbose as it was powerful, but still obscure to many. Then smartphones arrived, and performance became the watchword for developers—or at least for those who understood its importance.&lt;/p&gt;

&lt;p&gt;CSS libraries followed, and it quickly became clear: aesthetics and design systems play a crucial role in making a product feel “professional” and authoritative.&lt;/p&gt;

&lt;p&gt;Despite this significant evolution, JavaScript remains the primary means for many to manage interactions in search of the &lt;em&gt;wow&lt;/em&gt; effect—often disregarding the main goal: performance.&lt;/p&gt;

&lt;p&gt;Since 2023, I’ve been following an extraordinary trio in the Chrome DevTools world:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Ambassador&lt;/strong&gt; – Una Kravets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Genius&lt;/strong&gt; – Bramus&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Rockstar&lt;/strong&gt; – Adam Argyle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to them, I dove even deeper into the sea of creative possibilities achievable with just a few lines of CSS.&lt;/p&gt;

&lt;p&gt;In 2024, an important era for web UI began—what Una calls the “golden era”—and indeed it is just that: &lt;a href="https://developer.chrome.com/blog/new-in-web-ui-io-2024" rel="noopener noreferrer"&gt;New in Web UI – I/O 2024&lt;/a&gt;. I studied, experimented, shipped—and it was professionally very rewarding!&lt;/p&gt;

&lt;p&gt;Yet, this enthusiasm for interfaces consistently hits a wall: the rubber wall of the average user. Every innovation, no matter how elegant or performant, must overcome the hurdle of habit.&lt;br&gt;
For every UX or UI novelty, I’ve often had to handle the usual “yeah, but…”:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dark mode&lt;/strong&gt; – “Is it really necessary?”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS Grid&lt;/strong&gt; – “Those gaps look kind of ugly”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scroll Snap&lt;/strong&gt; – “Wouldn’t it be better to scroll with buttons?”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Position Sticky&lt;/strong&gt; – “It gives me a headache”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scroll-driven animation&lt;/strong&gt; – “It’s beautiful, but it doesn’t work on my iPhone”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These observations, though sometimes demoralizing, are a treasure. They teach us that innovation is not a developer’s monologue but a dialogue with the user.&lt;br&gt;
Our job isn’t just to implement a new feature but to guide the user, introducing novelties gradually and functionally.&lt;/p&gt;

&lt;p&gt;True avant-garde isn’t about using a technology just because it exists, but making it so intuitive that it feels like the most natural thing in the world.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Only when innovation becomes invisible can we say we have truly designed well.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ux</category>
      <category>ui</category>
      <category>css</category>
      <category>performance</category>
    </item>
    <item>
      <title>Online Advertising: Are We Paying Too High a Price?</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Fri, 06 Jun 2025 10:27:05 +0000</pubDate>
      <link>https://dev.to/akatamer/online-advertising-are-we-paying-too-high-a-price-50gi</link>
      <guid>https://dev.to/akatamer/online-advertising-are-we-paying-too-high-a-price-50gi</guid>
      <description>&lt;p&gt;As an experienced web user, I've always had a relationship of tolerance with online advertising. I've never installed ad-blocking plugins, always trusting in the good sense of those who host them on their sites and those who develop them.&lt;/p&gt;

&lt;p&gt;I work for an Italian publishing group, where I'm responsible for developing and innovating graphic interfaces for journalistic content. Recently, however, the need arose to develop our own advertising products, and consequently, my focus on this topic has intensified.&lt;/p&gt;

&lt;p&gt;I believe a good chef must love food. In the same way, to develop an effective advertising product, it's essential to understand it deeply, putting yourself in the shoes of those who 'consume' it.&lt;/p&gt;

&lt;p&gt;However, as I mentioned, my relationship with ads has always been one of minimal, tolerant perception. I saw these box-like elements relegated to a small 300x300px space or a page header. But things changed when these advertising elements started to become invasive, more interactive, and much larger.&lt;/p&gt;

&lt;p&gt;I prefer ads that sit alongside the content rather than overwhelming it, and I believe this idea is shared by many users, perhaps even you who are reading this.&lt;/p&gt;

&lt;p&gt;I find it truly frustrating to close ads that interrupt my browsing, and even worse when I navigate from one page to another and a similar intrusive ad appears again.&lt;/p&gt;

&lt;p&gt;Surely, the reason these commercial elements are introduced is economic: the more an ad is seen and forces user interaction—even if it's just to close it or an accidental click—the higher its economic value.&lt;/p&gt;

&lt;p&gt;However, while there's an economic reward on one side, there could be user alienation on the other.&lt;/p&gt;

&lt;p&gt;Why should a user repeatedly endure an annoying experience?&lt;/p&gt;

&lt;p&gt;Only one subtle answer comes to mind: for the exclusivity of the content.&lt;/p&gt;

&lt;p&gt;As a user, I am so interested in reading that content, watching that video, or intrigued by those images that I am even willing to endure an advertisement for several seconds.&lt;/p&gt;

&lt;p&gt;It makes you wonder if this strategy, as ubiquitous as it is, is truly forward-thinking, or if it's slowly eroding the trust of the most precious resource of all: the end user.&lt;/p&gt;

</description>
      <category>adv</category>
      <category>ux</category>
    </item>
    <item>
      <title>Pure CSS Accrodion</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Thu, 09 Sep 2021 14:47:15 +0000</pubDate>
      <link>https://dev.to/akatamer/pure-css-accrodion-aep</link>
      <guid>https://dev.to/akatamer/pure-css-accrodion-aep</guid>
      <description>&lt;p&gt;Here is another component, usually made with JS, developed in &lt;strong&gt;pure CSS&lt;/strong&gt;.&lt;br&gt;
Also on this occasion I exploited the potential of the &lt;code&gt;input&lt;/code&gt;, which guarantee a homogeneous robustness in every browser and operating system.&lt;/p&gt;

&lt;p&gt;In this case the &lt;code&gt;checkbox&lt;/code&gt; allows you to have more &lt;em&gt;tabs&lt;/em&gt; open in an &lt;strong&gt;accordion&lt;/strong&gt; , unlike the &lt;code&gt;radio&lt;/code&gt;.&lt;/p&gt;

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

</description>
      <category>css</category>
      <category>performance</category>
      <category>showdev</category>
      <category>codepen</category>
    </item>
    <item>
      <title>Pure css ADV</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Sat, 17 Jul 2021 11:35:11 +0000</pubDate>
      <link>https://dev.to/akatamer/pure-css-adv-41on</link>
      <guid>https://dev.to/akatamer/pure-css-adv-41on</guid>
      <description>&lt;p&gt;The last task assigned to me is to convert a js based adv component to pure css.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As always, the analysis was focused on what I could have lost by not using the js or on what the css would have "tied my hands".&lt;br&gt;
I managed to keep every feature.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The strategy to achieve the desired result involves the arrangement of the elements on different &lt;strong&gt;z-index&lt;/strong&gt; and the use of &lt;strong&gt;CSS Combinators&lt;/strong&gt; (+ and ~).&lt;/p&gt;

&lt;p&gt;I definitely excluded the links&lt;code&gt;:target&lt;/code&gt; because, unlike the inputs, they do not allow the maintenance of the assigned stage if not their focus.&lt;br&gt;
Furthermore, among the checkbox and the &lt;strong&gt;radio&lt;/strong&gt;, the latter were the most appropriate solution to define a &lt;em&gt;boolean&lt;/em&gt; stage.&lt;/p&gt;

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

</description>
      <category>performance</category>
      <category>showdev</category>
      <category>css</category>
      <category>codepen</category>
    </item>
    <item>
      <title>Snap carousel</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Sat, 26 Jun 2021 07:07:17 +0000</pubDate>
      <link>https://dev.to/akatamer/snap-carousel-642</link>
      <guid>https://dev.to/akatamer/snap-carousel-642</guid>
      <description>&lt;p&gt;In the last few days I have been asked to find a pure css solution to build an images carousel, I immediately thought about the current solution, however I also focused on what js gives the added value and therefore what I would have to give up with the my css solution.&lt;/p&gt;

&lt;p&gt;I analyzed the previous js carousel and noticed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;display of upcoming images&lt;/li&gt;
&lt;li&gt;interaction buttons&lt;/li&gt;
&lt;li&gt;snap effect&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here I found an equivalent solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arrangement of the different images with 100% height and automatic width in a div with horizontal overflow&lt;/li&gt;
&lt;li&gt;touch interaction&lt;/li&gt;
&lt;li&gt;css scroll snap&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;What have I given up? Nothing!&lt;br&gt;
What have I gained? A simpler structure and a lot of &lt;strong&gt;#performance&lt;/strong&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

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

</description>
      <category>html</category>
      <category>css</category>
      <category>performance</category>
      <category>codepen</category>
    </item>
    <item>
      <title>How to improve your code: tips and reflections</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Fri, 09 Apr 2021 09:40:07 +0000</pubDate>
      <link>https://dev.to/akatamer/how-to-improve-your-code-tips-and-reflections-3a1f</link>
      <guid>https://dev.to/akatamer/how-to-improve-your-code-tips-and-reflections-3a1f</guid>
      <description>&lt;p&gt;In my experience I have learned, with difficulty and by imposing humility on my pride, that often one's code can be improved.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There are several ways to achieve the same result, some are much better, others are more context-appropriate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some advices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Analyze the context and purpose&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Take your time for analysis&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It can help you write down on paper or represent the situation schematically&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You have to be far-sighted in the solution, it will have to work even in 10 years with new technologies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Dividi et impera&lt;/em&gt;: granulate your code, simplify it into sub-tasks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Take breaks where you think about other things and then look at what you have written critically: "How or where can I improve?"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compare yourself to other devs! When I am stuck, by exposing the problem I find the solution or I am provided with points of reflection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Details matters: it is precisely the details that give that sense of quality; without these the evaluation could be &lt;em&gt;good&lt;/em&gt; or &lt;em&gt;very good&lt;/em&gt;, while paying attention to the details the evaluation will be &lt;em&gt;excellent&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>codequality</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Roles, coordinations and convetions in web development</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Mon, 05 Apr 2021 12:18:38 +0000</pubDate>
      <link>https://dev.to/akatamer/roles-coordinations-and-convetions-in-web-development-4nm5</link>
      <guid>https://dev.to/akatamer/roles-coordinations-and-convetions-in-web-development-4nm5</guid>
      <description>&lt;p&gt;Backend, UI/UX Design and Frontend, the three protagonists of web development.&lt;br&gt;
If in the first two it is planned, in the third, in some aspects, it is implemented. Coordination is necessary.&lt;/p&gt;

&lt;p&gt;UI/UX Design must be conceived knowing the logic of the Backend and the tools of the Frontend; the Backend must pay attention to the best way to provide data, preferring performance. The Frontend must interact with both of its partners!&lt;/p&gt;

&lt;p&gt;You need rules, conventions to be respected among those repaired within them, for example by writing, or testing, the code with the same style.&lt;br&gt;
Organize work, schedule times, optimize communication flows and then talk; they are all valid instruments guaranteeing the expected results. &lt;br&gt;
Personally, I solved problems in 5 minutes by speaking with voice rather than 30 frustrating minutes of chat.&lt;/p&gt;

&lt;p&gt;In my frontend experience, sometimes it was necessary to change and then think about new UI or UX solutions, because the main players in the design didn't coordinate, they didn't talk to each other. This has repercussions on time and labor costs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We should learn to communicate in person, before developing in the communicative field.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>From Scroll to Grid in a snap!</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Sat, 03 Apr 2021 08:01:57 +0000</pubDate>
      <link>https://dev.to/akatamer/from-scroll-to-grid-in-a-snap-1fi6</link>
      <guid>https://dev.to/akatamer/from-scroll-to-grid-in-a-snap-1fi6</guid>
      <description>&lt;p&gt;The goal of the last year was &lt;strong&gt;not to use javascript&lt;/strong&gt;, as if I had been blindfolded and I had to use only my hearing to orient myself, at first it seemed like a handicap but over time I realized that I had refined this last sense.&lt;/p&gt;

&lt;p&gt;Among the different tasks I was asked to study and use the scroll snap in a mobile structure that must transform into a grid in the desktop version.&lt;/p&gt;

&lt;p&gt;Here is a simplified demo of the structure. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do you like this colour palette?&lt;/p&gt;
&lt;/blockquote&gt;

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

</description>
      <category>css</category>
      <category>codequality</category>
      <category>showdev</category>
      <category>codepen</category>
    </item>
    <item>
      <title>Custom Properties, never again without you</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Sat, 27 Mar 2021 08:24:14 +0000</pubDate>
      <link>https://dev.to/akatamer/custom-properties-never-again-without-you-14d</link>
      <guid>https://dev.to/akatamer/custom-properties-never-again-without-you-14d</guid>
      <description>&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/tamer_aka_remat/embed/vYyjLov?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Custom properties are one of the most important frontend development innovations in last years, definitely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Custom properties&lt;/strong&gt; are &lt;strong&gt;CSS Variables&lt;/strong&gt; that are assigned to the &lt;code&gt;properties&lt;/code&gt; and that can dynamically change the value!&lt;br&gt;
The benefits are tangible during development, let's analyze simple examples to highlight the benefits.&lt;/p&gt;
&lt;h2&gt;
  
  
  CSS, Traditional way
&lt;/h2&gt;

&lt;p&gt;In this portion of the code, with the traditional CSS we must explicitly declare the initial value of the &lt;code&gt;property&lt;/code&gt; and that of the status changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.block {
  background-color: red;
}

.block:hover {
  background-color: blue;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SCSS Variables
&lt;/h2&gt;

&lt;p&gt;With the pre-processors, in the example that follows SCSS, it is possible to be more ordered: by storing the value of a &lt;code&gt;property&lt;/code&gt; in a variable this can be recalled from multiple blocks, however the value of the variable cannot be changed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$background: red;
$background-modifier: yellow;
$background-hover: blue;

.block {
  background-color: $background;

  &amp;amp;:hover {
    background-color: $background-hover;
  }

  &amp;amp;--modifier {
    background-color: $background-modifier;
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SCSS, CSS Var
&lt;/h2&gt;

&lt;p&gt;Everything changes with CSS variables, as w3c explains:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CSS variables have access to the DOM, which means that you can create variables with local or global scope, change the variables with JavaScript, and change the variables based on media queries.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:root {
  --background: red;
}

.block {
  background-color: var(--background);

  &amp;amp;:hover {
    --background: blue;
  }

  &amp;amp;--modifier {
    --background: yellow;

    &amp;amp;:hover {
      --background: purple;
    } 
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The previous example highlights all the potential and order that the CSS vars guarantee.&lt;br&gt;
Let's assume we have to adapt the whole website for dark mode too ... nothing simpler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:root {
  --background: red;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background: grey;
  }
}

.block {
  background-color: var(--background);

  &amp;amp;:hover {
    --background: blue;
  }

  &amp;amp;--modifier {
    --background: yellow;

    &amp;amp;:hover {
      --background: purple;
    } 
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tips:
&lt;/h3&gt;

&lt;p&gt;Consider &lt;em&gt;local&lt;/em&gt; or &lt;em&gt;global&lt;/em&gt; vars scope, think about what it is better to declare &lt;em&gt;global&lt;/em&gt; and therefore have it available throughout the project and what to declare within a block as &lt;em&gt;local&lt;/em&gt;, making "economy".&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>tutorial</category>
      <category>codequality</category>
    </item>
    <item>
      <title>Did you ever used "will-change" property? Show me some example</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Fri, 26 Mar 2021 19:04:45 +0000</pubDate>
      <link>https://dev.to/akatamer/did-ever-used-will-change-property-show-me-some-example-2o8d</link>
      <guid>https://dev.to/akatamer/did-ever-used-will-change-property-show-me-some-example-2o8d</guid>
      <description>&lt;h3&gt;
  
  
  MDN
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The CSS will-change property tells browsers which properties of an element are expected to change enabling browsers to set up optimizations before the element is actually changed, improving performance by doing potentially expensive work before it is required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am trying to understand the correct use, but i find too many constraints and conditions ... help me to understand how you have used this 'property' in your experience.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>showdev</category>
      <category>css</category>
      <category>codequality</category>
    </item>
    <item>
      <title>What crossbrowser tips do you seggest me?</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Wed, 24 Mar 2021 19:35:07 +0000</pubDate>
      <link>https://dev.to/akatamer/what-crossbrowser-tips-do-you-seggest-me-24a1</link>
      <guid>https://dev.to/akatamer/what-crossbrowser-tips-do-you-seggest-me-24a1</guid>
      <description>&lt;p&gt;This morning I read about how much Google is working on crossbrowsing. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Google is partnering with other browser vendors and industry partners to fix the top five browser compatibility pain points for web developers&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://web.dev/compat2021/" rel="noopener noreferrer"&gt;https://web.dev/compat2021/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was pleasantly surprised by this, because for me the verification of multiple devices always turns out to be boring.&lt;/p&gt;

&lt;p&gt;What strategies do you implement for an excellent crossbrowser development?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>codequality</category>
      <category>webdev</category>
      <category>help</category>
    </item>
    <item>
      <title>Solutions and components, usually managed with javascript, built in pure css</title>
      <dc:creator>Tamer</dc:creator>
      <pubDate>Sat, 20 Mar 2021 10:31:56 +0000</pubDate>
      <link>https://dev.to/akatamer/solutions-and-components-usually-managed-with-javascript-built-in-pure-css-1ka6</link>
      <guid>https://dev.to/akatamer/solutions-and-components-usually-managed-with-javascript-built-in-pure-css-1ka6</guid>
      <description>&lt;p&gt;Coding interfaces in which I defined structures, components, css I'm also used to think about animations, micro interactions and functional ones. This phase calls some aspects into question.&lt;/p&gt;

&lt;p&gt;In the early years of my career, I didn't pay much attention to performance, on the contrary the designers always pushed me to a massive use of javascript for every type of animation.&lt;br&gt;
Today performance is key as most of the traffic is by far mobile, it would be really silly to use js for some simple animations while in others, sadly, a state class still needs to be added.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I want to share with you some workarounds that I learned from the web, designed and used in some projects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Back to top
&lt;/h2&gt;

&lt;p&gt;One of the most useless animations via js, used only to exploit the fluid effect of the scroll. It is a simple trivial link! &lt;/p&gt;

&lt;p&gt;So if you usually write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$("#toTop").click(function () {
   $("html, body").animate({scrollTop: 0}, 1000);
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;style&amp;gt;
html {
  scroll-behavior: smooth;
}
&amp;lt;/style&amp;gt;

&amp;lt;a href="#top"&amp;gt;To top&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Dropdown
&lt;/h2&gt;

&lt;p&gt;Usually this component works by clicking its label for open and close its panel in which to select the contents.&lt;br&gt;
To get this construction without js we need to structure the component in such a way that the panel appears on the mobile focus or desktop hover of the component. So the panel must be nested inside the component with the &lt;code&gt;visibility: hidden&lt;/code&gt; property.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Scrollsnap
&lt;/h2&gt;

&lt;p&gt;Recently css3 introduced this new specification supported in cross browser mode. &lt;a href="https://caniuse.com?search=Scroll%20snap" rel="noopener noreferrer"&gt;https://caniuse.com?search=Scroll%20snap&lt;/a&gt;&lt;br&gt;
A nice computational savings for our mobile device!&lt;br&gt;
Defining a few properties the &lt;code&gt;.child&lt;/code&gt; flow inside the &lt;code&gt;.parent&lt;/code&gt; container in a fluid way, hooking themselves to the beginning of this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.parent {
  scroll-snap-type: mandatory;
  scroll-snap-points-y: repeat(300px);
  scroll-snap-type: y mandatory;
}

.child {
  scroll-snap-align: start;
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Modal
&lt;/h2&gt;

&lt;p&gt;Yes... it is possible, just without js.&lt;br&gt;
I took a clear example from &lt;a href="https://codepen.io/felipefialho" rel="noopener noreferrer"&gt;https://codepen.io/felipefialho&lt;/a&gt; which highlights how simple it can be to develop this component.&lt;br&gt;
If with js we would have had to click on the &lt;code&gt;button&lt;/code&gt; to add a class of the &lt;code&gt;modal&lt;/code&gt;, with only the css we use the button as a &lt;code&gt;link&lt;/code&gt; that refer to the modal as target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.modal:target:before {
  display: block;
}
.modal:target .modal-dialog {
  ...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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