au

From beauty parlours to farming, prisoners in India’s jails are channeling their time into creative new outlets

Some trivia from prisons across the country




au

KAU, Asia’s largest cocoa germplasm repository, ready to release six more clones




au

TNAU, Coimbatore, gets design patent for seed cube making machine




au

Centre launches new system to understand cropping patterns, impact of weather

Union Agriculture Ministry launches Krishi-DSS, a digital platform providing real-time data insights for stakeholders in Indian agriculture




au

After snails, farmers in Idukki battling spotted locust infestation; experts say change in climate pattern could be a cause

Plantations of over 70 farmers severely affected by the spotted locust infestation at Konnathady and Vathikudy panchayats




au

Bajaj Auto net up 29% to Rs. 803 crore




au

Decks cleared for Adani’s coal project in Australia: Envoy




au

Investment limits for govt. bonds to be auctioned




au

RBI adds 13 firms to its Alert List of unauthorised Forex trading platforms




au

Free salon for persons with disabilities inaugurated in Vellore




au

PMK functionary assaulted in Villupuram

Police suspect previous enmity to be the reason behind the incident




au

Three engineering students drown in Cauvery river in Namakkal

Jedarpalayam police registered a case and are investigating




au

T.N. stretch of Bengaluru-Chennai Expressway may be completed by August 2025

While the 24.50-km package from Walajapet to Arakkonam has the most progress, with over 84% of the work being carried out, the Arakkonam to Kancheepuram package has the least progress with about 52%




au

Man held for online part-time job fraud




au

Hindu Succession Act supports daughters but lets down widows and mothers, says Madras High Court

The loss to one section of women has been overlooked in the euphoria over the gain to another section, says Justice N. Seshasayee




au

Border checkposts in Nilgiris to soon have automatic number plate recognition cameras

This comes in the wake of the Madras High Court recently expressing dissatisfaction over the implementation of the e-pass system in the Nilgiris and Kodaikanal




au

T.N. CM Stalin inaugurates new buildings for rural local bodies




au

Deputy Chief Minister launches initiatives to support start-up ecosystem in T.N.

He also presents sanction letters for pre-incubation centres, which aim to support innovative business ideas in their initial stages




au

Beautiful Scrolling Experiences – Without Libraries

Michelle Barker appears as one of a heavenly host, coming forth with scroll in hand to pronounce an end to janky scrolljacking! Unto us a new specification is born, in the city of TimBL, and its name shall be called Scroll Snap.


Sponsor: Order any Standard paperback(s) and get a surprise gift card in the box for YOU. While supplies last, from your pals at A Book Apart!


One area where the web has traditionally lagged behind native platforms is the perceived “slickness” of the app experience. In part, this perception comes from the way the UI responds to user interactions – including the act of scrolling through content.

Faced with the limitations of the web platform, developers frequently reach for JavaScript libraries and frameworks to alter the experience of scrolling a web page – sometimes called “scroll-jacking” – not always a good thing if implemented without due consideration of the user experience. More libraries can also lead to page bloat, and drag down a site’s performance. But with the relatively new CSS Scroll Snap specification, we have the ability to control the scrolling behaviour of a web page (to a degree) using web standards – without resorting to heavy libraries. Let’s take a look at how.

Scroll Snap

A user can control the scroll position of a web page in a number of ways, such as using a mouse, touch gesture or arrow keys. In contrast to a linear scrolling experience, where the rate of scroll reflects the rate of the controller, the Scroll Snap specification enables a web page to snap to specific points as the user scrolls. For this, we need a fixed-height element to act as the scroll container, and the direct children of that element will determine the snap points. To demonstrate this, here is some example HTML, which consists of a <div> containing four <section> elements:

<div class="scroll-container">
  <section>
    <h2>Section 1</h2>
  </section>
  <section>
    <h2>Section 2</h2>
  </section>
  <section>
    <h2>Section 3</h2>
  </section>
  <section>
    <h2>Section 4</h2>
  </section>
</div>

Scroll snapping requires the presence of two main CSS properties: scroll-snap-type and scroll-snap-align. scroll-snap-type applies to the scroll container element, and takes two keyword values. It tells the browser:

  • The direction to snap
  • Whether snapping is mandatory

scroll-snap-align is applied to the child elements – in this case our <section>s.

We also need to set a fixed height on the scroll container, and set the relevant overflow property to scroll.

.scroll-container {
  height: 100vh;
  overflow-y: scroll;
  scroll-snap-type: y mandatory;
}

section {
  height: 100vh;
  scroll-snap-align: center;
}

In the above example, I’m setting the direction in the scroll-snap-type property to y to specify vertical snapping. The second value specifies that snapping is mandatory. This means that when the user stops scrolling their scroll position will always snap to the nearest snap point. The alternative value is proximity, which determines that the user’s scroll position will be snapped only if they stop scrolling in the proximity of a snap point. (It’s down to the browser to determine what it considers to be the proximity threshold.)

If you have content of indeterminate length, which might feasibly be larger than the height of the scroll container (in this case 100vh), then using a value of mandatory can cause some content to be hidden above or below the visible area, so is not recommended. But if you know that your content will always fit within the viewport, then mandatory can produce a more consistent user experience.

See the Pen Simple scroll-snap example by Michelle Barker (@michellebarker) on CodePen.

In this example I’m setting both the scroll container and each of the sections to a height of 100vh, which affects the scroll experience of the entire web page. But scroll snapping can also be implemented on smaller components too. Setting scroll snapping on the x-axis (or inline axis) can produce something like a carousel effect.

In this demo, you can scroll horizontally scroll through the sections:

See the Pen Carousel-style scroll-snap example by Michelle Barker (@michellebarker) on CodePen.

The Intersection Observer API

By implementing the CSS above, our web page already has a more native-like feel to it. To improve upon this further we could add some scroll-based transitions and animations. We’ll need to employ a bit of Javascript for this, using the Intersection Observer API. This allows us to create an observer that watches for elements intersecting with the viewport, triggering a callback function when this occurs. It is more efficient than libraries that rely on continuously listening for scroll events.

We can create an observer that watches for each of our scroll sections coming in and out of view:

const sections = [...document.querySelectorAll('section')]

const options = {
  rootMargin: '0px',
  threshold: 0.25
}

const callback = (entries) => {
  entries.forEach((entry) => {
    if (entry.intersectionRatio >= 0.25) {
      target.classList.add("is-visible");
    } else {
      target.classList.remove("is-visible");
    }
  })
}

const observer = new IntersectionObserver(callback, options)

sections.forEach((section, index) => {
  observer.observe(section)
})

In this example, a callback function is triggered whenever one of our sections intersects the container by 25% (using the threshold option). The callback adds a class of is-visible to the section if it is at least 25% in view when the intersection occurs (which will take effect when the element is coming into view), and removes it otherwise (when the element is moving out of view). Then we can add some CSS to transition in the content for each of those sections:

section .content {
  opacity: 0:
}

section.is-visible .content {
  opacity: 1;
  transition: opacity 1000ms:
}

This demo shows it in action:

See the Pen Scrolling with Intersection Observer by Michelle Barker (@michellebarker) on CodePen.

You could, of course, implement some much more fancy transition and animation effects in CSS or JS!

As an aside, it’s worth pointing out that, in practice, we shouldn’t be setting opacity: 0 as the default without considering the experience if JavaScript fails to load. In this case, the user would see no content at all! There are different ways to handle this: We could add a .no-js class to the body (which we remove on load with JS), and set default styles on it, or we could set the initial style (before transition) with JS instead of CSS.

Position: sticky

There’s one more CSS property that I think has the potential to aid the scroll experience, and that’s the position property. Unlike position: fixed, which locks the position of an element relative to the nearest relative ancestor and doesn’t change, position: sticky is more like a temporary lock. An element with a position value of sticky will become fixed only until it reaches the threshold of its parent, at which point it resumes relative positioning.

By “sticking” some elements within scroll sections we can give the impression of them being tied to the action of scrolling between sections. It’s pretty cool that we can instruct an element to respond to it’s position within a container with CSS alone!

Browser support and fallbacks

The scroll-snap-type and scroll-snap-align properties are fairly well-supported. The former requires a prefix for Edge and IE, and older versions of Safari do not support axis values. In newer versions of Safari it works quite well. Intersection Observer similarly has a good level of support, with the exception of IE.

By wrapping our scroll-related code in a feature query we can provide a regular scrolling experience as a fallback for users of older browsers, where accessing the content is most important. Browsers that do not support scroll-snap-type with an axis value would simply scroll as normal.

@supports (scroll-snap-type: y mandatory) {
  .scroll-container {
    height: 100vh;
    overflow-y: scroll;
    scroll-snap-type: y mandatory;
  }

  section {
    height: 100vh;
    scroll-snap-align: center;
  }
}

The above code would exclude MS Edge and IE, as they don’t support axis values. If you wanted to support them you could do so using a vendor prefix, and using @supports (scroll-snap-type: mandatory) instead.

Putting it all together

This demo combines all three of the effects discussed in this article.

Summary

Spending time on scroll-based styling might seem silly or frivolous to some. But I believe it’s an important part of positioning the web as a viable alternative to native applications, keeping it open and accessible. While these new CSS features don’t offer all of the control we might expect with a fully featured JS library, they have a major advantage: simplicity and reliability. By utilising web standards where possible, we can have the best of both worlds: Slick and eye-catching sites that satisfy clients’ expectations, with the added benefit of better performance for users.


About the author

Michelle is a Lead Front End Developer at Bristol web agency Atomic Smash, author of front-end blog CSS { In Real Life }, and a Mozilla Tech Speaker. She has written articles for CSS Tricks, Smashing Magazine, and Web Designer Magazine, to name a few. She enjoys experimenting with new CSS features and helping others learn about them.

More articles by Michelle




au

A burst of beauty

A mushrooming of beauty facilities in the city, offering a plethora of choices, is redefining the conventional idea of beauty




au

Tabu turns showstopper for Gaurang Shah

Actor Tabu in a Nizam-era inspired ensemble by Gaurang Shah added sheen to National Handloom Day 2022 in Hyderabad




au

Uniqlo turns three in the India market; launches second edition of its collaboration with Italian luxury fashion house Marni

Headquartered in Tokyo, the Japanese apparel brand focusses on technology and sustainability, and its latest collection of fleece jackets is made of recycled PET bottles



  • Life &amp; Style

au

After a 20 year-long wait, Anita Dongre launches her vegan accessory line comprising handbags and belts

The new line of belts and bags are made from a plant-based, plastic-free material called Mirum



  • Life &amp; Style

au

Beautiful, naturally

Blossom Kochhar says if you can eat it, it can be used on your face.




au

Give the cauliflower diet a go

Among the endless low-carb, paleo diets for weight loss is the cauliflower diet, which is healthy and doesn’t compromise on taste, says Radha Thomas




au

Editorial. Cautious and conservative

Budget is conservative but not averse to experimenting




au

RBI approves third term for Axis Bank MD, CEO Amitabh Chaudhry

Before joining Axis Bank, Chaudhry was leading HDFC Life



  • Money &amp; Banking

au

Govt can waive off GST on health cover, step up focus on insurance penetration: FGII CEO Anup Rau

Removing GST on health insurance would make it more affordable, driving higher penetration and reducing the government’s burden



  • Money &amp; Banking

au

Five-Star Business Finance posts ₹268 cr profit in Q2, AUM grows 32%

For the quarter ended September 30, 2024, the company’s net profit surged by 34 per cent to ₹268 crore, up from ₹199 crore



  • Money &amp; Banking

au

Compliant with gold loan norms, will further strengthen audit processes: CSB Bank MD

Bank expects its advances and deposits to rise at least 30-50 per cent faster than the banking system



  • Money &amp; Banking

au

City Union Bank to launch new retail products in Q4, eyes growth in FY26

To focus on secured loan products



  • Money &amp; Banking

au

Punjab & Sind Bank launches e-bank guarantee facility 

This new facility replaces paper-based BG issuance process with stamping and signatures



  • Money &amp; Banking

au

Indian Overseas Bank launches online Re-KYC service for hassle-free updates

This new digital service allows customers to update their KYC information without visiting the bank branch, utilising three accessible channels: the IOB website, SMS, or email



  • Money &amp; Banking

au

Finance Minister launches five Nari Shakti branches of Union Bank of India for women entrepreneurs

Union Bank of India opens Nari Shakti branches in Bengaluru, Chennai, Visakhapatnam, and Jaipur



  • Money &amp; Banking

au

Still Longshots / directed by: David Finch, Maureen Marovitch ; produced by: Dan Emery, David Finch, Germaine Ying Gee Wong, Sally Bochner, Ravida Din ; production agencies: Picture This Productions (Montreal), National Film Board of Canada (Montreal)

Montreal : National Film Board of Canada, 2018




au

If Only ... / directed by: Marc Aubry ; produced by: Robert Forget ; production agency: National Film Board of Canada (Montreal)

Montreal : National Film Board of Canada, 2021




au

Kamitshikaut / directed by: Shaushiss Fontaine ; produced by: Manon Barbeau ; production agencies: National Film Board of Canada (Montreal), Corporation Wapikoni mobile (Montreal)

Montreal : National Film Board of Canada, 2023




au

Alone in the Abyss / directed by: Claudie Ottawa ; produced by: Manon Barbeau, Patricia Bergeron, Manon Barbeau, Yves Bisaillon, Ravida Din ; production agencies: Corporation Wapikoni mobile (Montreal), National Film Board of Canada (Montreal)

Montreal : National Film Board of Canada, 2018




au

Caninabis / directed by: Kaj Pindal ; produced by: Gaston Sarault ; production agency: National Film Board of Canada (Montreal)

Montreal : National Film Board of Canada, 2018




au

Drone pilot training to be launched at Vikarama Simhapuri University in Nellore

A consortium of five companies will sign an MoU with the university to co-create a certification programme in Drone Engineering




au

Jagan Mohan Reddy pays tributes to Maulana Abul Kalam Azad




au

Vignan’s University launches new courses, scholarships and industry partnerships




au

Child mauled to death by stray dogs in A.P.’s NTR district

Vijayawada Parliament Member, Kesineni Sivanath, SCPCR Chairman Kesali Appa Rao expressed concern over the death of the boy, directs VMC, Panchayat Raj officials to take steps to prevent dog menace




au

54-year-old man awarded life term for sexually assaulting 5-year-old girl




au

Ratan Naval Tata: A philanthropist who went for the long haul

Ratan Tata was unflinching in his support to TIFR and NCBS




au

Bernoulli's fallacy [electronic resource] : statistical illogic and the crisis of modern science / Aubrey Clayton.

New York : Columbia University Press, [2021]




au

Probability, choice, and reason [electronic resource] / Leighton Vaughan Williams.

Boca Raton, FL : CRC Press, 2022.




au

Rewriting, computation and proof [electronic resource] : essays dedicated to Jean-Pierre Jouannaud on the occasion of his 60th birthday / Hubert Comon-Lundh, Claude Kirchner, Hélène Kirchner (eds.)

Berlin ; New York : Springer, 2007




au

Algebraic design theory [electronic resource] / Warwick De Launey, Dane Flannery.

[Place of publication not identified] : American Mathematical Society, 2011.




au

Galois theory [electronic resource] / Steven H. Weintraub

New York ; London : Springer, [c 2006.]