libraries

Public Libraries Add Multimedia Learning to Digital Mission

Public libraries are moving deeper into digital learning, often in partnership with schools and other institutions, to help prepare students for the skills they'll need for college and careers.




libraries

Libraries employees receive national award for technology innovation

Two Penn State University Libraries employees at Berks Thun Library, Penn State Berks, have been awarded the American Library Association’s 2020 Emerging Technologies Section 2020 Best Emerging Technology Application (BETA) Award, which recognizes a technology application that directly benefits library users.




libraries

Second Libraries team at Berks campus wins national award for innovative work

Three Berks Thun Library employees received the 2020 Innovation in College Librarianship Award from the College Libraries Section of the Association of College & Research Libraries, a division of the American Library Association. The award honors librarians who demonstrate a capacity for innovation in working with or serving undergraduates or instructors in the areas of programs, services, and operations, or creating innovations for library colleagues that facilitate their ability to better serve the library’s community.




libraries

Libraries Short Stories spring contest winners announced

The winning writers of Penn State University Libraries Short Stories’ “April Showers” spring 2020 contest have been announced. Representing six Penn State campuses, the latest writing contest challenged Penn State students, faculty and staff across the commonwealth to unleash their best original short stories or poetry on the theme of weather.




libraries

Libraries' Virtual De-Stress Fest open to all Penn State students

Penn State University Libraries is offering an Online De-Stress Fest to help students relax and unwind while completing end-of-term reports and studying for final exams. Visit through Friday, May 8, for a curated list of links, tutorials and homegrown videos that showcase the talents of University Libraries’ faculty and staff.




libraries

Delaware Libraries Launch 2018 Statewide Summer Library Challenge

Delaware’s First Lady Tracey Quillen Carney will kick off the statewide 2018 Summer Library Challenge, Libraries Rock, this week at public libraries in all three counties. She will be joined by special guests Turtle Dance Music, an autism/sensory-friendly performance group. The kick-off events are: 11:00 a.m. Friday, June 15 at the Route 9 Library; 10:30 […]




libraries

Delaware Libraries Launch Library Cards for Children

It’s never too early to read or be read to. And to help build the reading, learning, and library habit, Delaware’s First Lady, Tracey Quillen Carney, announced the My First Delaware Library Card and the kids Super Library Card this summer. These new library cards target babies, toddlers, and preschoolers (birth to 5 years old) […]




libraries

Delaware Libraries Celebrate Reading and Back to School

Delaware’s First Lady Tracey Quillen Carney and Delaware Libraries celebrated libraries and reading during Summer Library Reading Celebrations at the Milford Public Library and Route 9 Library and Innovation Center. The First Lady, Delaware Libraries, United Way and other partners encourage all children and teens to continue to use their most valuable school supply, a […]




libraries

Career Services from Delaware Department of Labor available at select public libraries

The Delaware Division of Libraries and Delaware Department of Labor (DOL) rolled out the partnership in February 2019 to be able to reach out to more residents who may be in need of services but can’t travel to Department of Labor locations. With the many computers available at libraries, a staff member can offer residents […]




libraries

DPH, United Way and Delaware Division of Libraries to Host Free Books, Balls and Blocks Event for Children

The Division of Public Health (DPH) invites parents with children from birth to 5 years old to participate in its first Books, Balls and Blocks event, which will take place from 1:00 to 4:00 p.m., Saturday, October 13, at the Route 9 Library and Innovation Center in New Castle, Delaware.




libraries

What’s All the Hoopla at Delaware Libraries?

hoopla is a digital media service offered by Delaware Public Libraries that allows you to borrow movies, music, audiobooks, ebooks, comics and TV shows to enjoy on your computer, tablet, or phone – and even your TV is NOW available! Download the hoopla app to your device, sign-in with your Delaware Library Card. Don’t have […]




libraries

Delaware Libraries Shared Virtual Library Event Calendar

Delaware Libraries across the state have created a shared Virtual Library Events Calendar to enable Delawareans to participate in library programs and storytime while at home. The library building may be closed, but the virtual library is open and ready for you from your home. Everyone is welcome to join in on all the events […]




libraries

VHDL-AMS std and ieee libraries not found/empty

I'm trying to set up a VHDL-AMS simulation, so I made a new cell, selected the vhdlamstext type, and copied some example from the web. But when I hit the save and compile button, I first got the following NOLSTD error:

https://www.edaboard.com/showthread.php?27832-Simulating-a-VHDL-design-in-ldv5-1

So I added said file to my cds.lib and tried again. But now I'm getting this:

ncvhdl_p: *F,DLUNNE: Can't find STANDARD at /cadappl/ictools/cadence_ic/6.1.7.721/tools/inca/files/STD.

If I go over to the Library Browser, it indeed shows that the library is completely empty. Properties show it has the following files attached.

In the file system I've also found a STD.src folder. Is there a way to recompile the library properly? Supposedly this folder includes precompiled versions, but looks like not really.





libraries

OpenSCAP Libraries 1.3.2

The openscap project is a set of open source libraries that support the SCAP (Security Content Automation Protocol) set of standards from NIST. It supports CPE, CCE, CVE, CVSS, OVAL, and XCCDF.




libraries

OpenSCAP Libraries 1.3.3

The openscap project is a set of open source libraries that support the SCAP (Security Content Automation Protocol) set of standards from NIST. It supports CPE, CCE, CVE, CVSS, OVAL, and XCCDF.




libraries

How Libraries Use Social Media

https://blog.techsoup.org/posts/how-libraries-use-social-media

Eighty-one percent of Americans have social media accounts, and that number is expected to grow each year. Nearly all brands have a social presence, and libraries are no different. Libraries are using social platforms now more than ever before.

The New York Public Library has 2.2 million followers on Twitter, more followers than the celebrity Kathy Griffin. Social media is playing a significant role in helping libraries stay relevant in our ever-growing digital society.

TechSoup recently teamed up with WebJunction to find out the details on how libraries are using social media. We wanted to know how often libraries are using platforms and what some of their biggest challenges are. We surveyed 311 libraries throughout the country and found out some interesting things.

In our survey, we found that 55 percent of respondents serve fewer than 25,000 patrons, so nearly half of the respondents were smaller libraries, probably mostly in rural areas. We found that libraries are using social, and they are eager to grow their channels.

More than half (55.7 percent) of libraries spend less than 5 hours per week on social media, and 28 percent spend only 6 to 10 hours a week.

Libraries use Facebook more than any other social platform. Twitter is the next most popular platform, and then Instagram.

Forty-four percent of libraries post daily on Facebook, and 25 percent also post daily on Twitter.

Libraries are using social media to share events and pictures, educate people about services, highlight their collections, and support other libraries.

Growing followers and finding staff support are some of libraries' biggest social media challenges.

Learn How to Grow Your Library's Social Media Channels with Our WebJunction Webinars

Registration is now open for the Social Media and Libraries Webinar Series, hosted by WebJunction and TechSoup for Libraries in collaboration. We'll help you build a social media strategy, including how to select platforms that work with different types of library content to create brand awareness, increase traffic, and meet community goals. This series will highlight social media best practices to keep patrons and library staff engaged, develop measurable goals, and cultivate new readers and learners in your community.

On October 24, join us to learn how libraries can effectively use social media tools, even with limited staff and time. Learn how to identify the appropriate social media platforms to market library services and events, and how to integrate best social media practices in your library's marketing plan. We'll help you build a foundation for your social media strategy and provide practical ideas and tactics for immediate use in your library.

Register for October 24

On November 30, join us to learn all about social media analytics. Now that you are using social media to engage with your community, how do you know if it's working? If you don't know where to start when planning your social media metrics, join us to learn the best methods to measure your library's social media outcomes. During this event, you will learn how to establish measurable goals, identify key performance indicators (KPIs), and evaluate your social media results

Register for November 30

On December 19, join us to learn how to take the next steps toward amplifying your library's social media program. During this third webinar in our social media series, we'll discuss best practices in growing your library's social media program and managing user engagement. You'll learn tips on assessing the members of your library's audience based on their preferred platforms, and ideas for converting your in-person library community into an online community.

Register for December 19

How Is Your Library Using Social Media?

Our survey is still going on! Take our survey and tell us how your library is using social media.




libraries

Decision to cut libraries quashed by High Court

Following the unsuccessful “save the library” challenge against Brent Council in 2011, comes another  High Court judgment in judicial review proceedings involving a Council’s decision to achieve spending cuts by reducing its l...




libraries

Closed bookstores and libraries remain a challenge for bibliophiles

Japan is a nation of bibliophiles and while bookstores saw a spike in sales as schools closed due to the outbreak of COVID-19, publishers now ...




libraries

16-Bit Language Tools Libraries

16-Bit Language Tools Libraries




libraries

Wales eases lockdown by reopening garden centres and libraries and relaxing exercise rules

Wales has taken the first step to easing lockdown by relaxing exercise rules and reopening some libraries, tips and garden centres.




libraries

How public libraries help build healthy communities

They say you can’t judge a book by its cover. Increasingly in the United States, you also can’t judge a library’s value to its community by simply its books. Let us explain. In a previous blog post, we’ve noted the importance of “third places” in strengthening communities – meaning those places that are neither one’s…

      




libraries

Should cities be allowed to ban Little Free Libraries?

There are reasonable limits on what people can do on their properties. But this goes too far.




libraries

Tool libraries are making a comeback

Some are even containerized and self-service, and have a lot more than just tools.




libraries

In defense of libraries -- and why Amazon can never compare

An economics professor suggested we replace libraries with Amazon bookstores "to save taxpayers money" and the Internet went wild, with good reason.




libraries

Americans still love libraries

Libraries were the 'most common cultural activity' for many Americans last year.




libraries

Libraries as the Next Big Pop Culture Phenomenon

We just noted the rising popularity of e-books as Amazon announced sales of digital books have consistently surpassed sales of hardcover books. However, don't think libraries will turn to ancient ruins quite yet. Pop




libraries

Coronavirus: Wales allows garden centres and libraries to open

First Minister Mark Drakeford pre-empted the 'exit strategy' from Westminster as he declared that only 'small and modest' easings are possible to avoid coronavirus flaring up.




libraries

Goa govt may allow reopening of music classes, state libraries

The Goa government may allow holding of music classes and reopening of some state-run libraries in a phased manner on the condition of maintaining strict social distancing norms, Art and Culture Minister Govind Gawade said on Saturday. However, resumption of dramas and other entertainment events will be allowed only after monsoon gets over. The state-run Kala Academy will also reopen once rainy season gets over, he told PTI. Goa is classified as a green zone with no coronavirus positive case as of now. Meanwhile, Gawade said the overall budget of the state Art and Culture department is likely to be slashed by almost 30 per cent as part of fiscal measures being adopted for kick-starting the economy, which is affected by the COVID situation. He also said that demand made by various artists seeking monthly renumeration cannot be approved. Some professional artists and theatre personalities had raised a demand for a package with chief minister Pramod Sawant and Gawade, saying




libraries

Java APIs, Extensions and Libraries: With JavaFX, JDBC, jmod, jlink, Networking, and the Process API, Second Edition / by Kishori Sharan

Online Resource




libraries

Blockchain in libraries / Michael Meth.

Chicago, IL : ALA TechSource, [2019]




libraries

Digital libraries [electronic resource] : achievements, challenges and opportunities : 9th International Conference on Asian Digital Libraries, ICADL 2006, Kyoto, Japan, November 27-30, 2006 : proceedings / Shigeo Sugimoto [and others] (eds.)

Berlin : Springer, [2006]




libraries

Digital libraries [electronic resource] : implementing strategies and sharing experiences : 8th International Conference on Asian Digital Libraries, ICADL 2005, Bangkok, Thailand, December 12-15, 2005 : proceedings / Edward A. Fox [and others] (eds.)

Berlin ; New York : Springer, [2005]




libraries

Digital Libraries [electronic resource] : International Collaboration and Cross-Fertilization 7th International Conference on Asian Digital Libraries, ICADL 2004, Shanghai, China, December 13-17, 2004. Proceedings / edited by Zhaoneng Chen, Hsinchun Chen

Berlin, Heidelberg : Springer Berlin Heidelberg, 2005




libraries

Digital libraries [electronic resource]: research and development : First International DELOS Conference, Pisa, Italy, February 13-14, 2007 : revised selected papers / Costantino Thanos, Francesca Borri, Leonardo Candela (eds.)

Berlin ; New York : Springer, [2007]




libraries

Strategic human resource planning for academic libraries [electronic resource] : information, technology and organization / Michael A. Crumpton

Crumpton, Michael A., author




libraries

The ART of people management in libraries [electronic resource] : tips for managing your most vital resource / by James McKinlay and Vicki Williamson

McKinlay, James, MHRD




libraries

Web Tools #350 - JS Libraries, Testing Tools, Site Builders

Web Tools Weekly

Issue #350 • April 2, 2020

Advertisement via Syndicate
Working From Home? Try Team.Video
Team.video makes it easier and faster for remote teams to work together by offering user friendly video meetings with agendas, collaborative notes, and emoji responses. No download required and it’s free to use.
Try Team.video for FREE!

If you've never looked into using the HTML Drag and Drop API, I've created a super simple code example that uses the least code possible to demonstrate how simple it is to allow one element to be dragged into another one on a web page.

First, here's the HTML:

<div id="box" draggable="true"></div>
<div id="dropzone"></div>

Notice the draggable attribute set to true, and the IDs that I'll use as hooks in the JavaScript. Here's the JavaScript:

let box = document.getElementById('box'),
    dropzone = document.getElementById('dropzone');

dropzone.addEventListener('dragover', function (e) {
  e.preventDefault();
});

dropzone.addEventListener('drop', function (e) {
 
e.target.appendChild(box);
});

Here I'm listening for the dragover and drop events to ensure that the element gets moved properly. The move itself is accomplished using the well-known appendChild() method.

And that's it! Aside from the variable declarations, it's just 6 lines of JavaScript. This code on its own isn't going to do a whole lot. All it does is drag the 'box' element into the 'dropzone' element.

You can see this in action in this CodePen demo, which also includes a little extra code that does the following:

  • Adds some styles to indicate that the box is draggable and that the dropzone is being dragged over
  • Listens for the dragend event to remove styles indicating that the box is draggable and disables the 'dragged over' styles
  • Switches the draggable attribute to false
There's a lot more that I could discuss about the API but this should suffice to give you a starting point, after which you can use a resource like the one on MDN to go deeper.
 

Now on to this week's tools!
 

JavaScript Libraries and Frameworks

Working From Home? Try Team.Video
Team.video makes it easier and faster for remote teams to work together by offering user friendly video meetings with agendas, collaborative notes, and emoji responses. No download required and it’s free to use.   via Syndicate

p5.js
Now at version 1+. JavaScript library for creative coding, with a focus on making coding accessible and inclusive for artists, designers, educators, and beginners.

Hex Engine
A modern 2D game engine for the browser, written in TypeScript and designed to feel similar to React.

LInQer
The C# Language Integrated Queries ported for JavaScript for amazing performance.

Type Route
A flexible, type safe routing library, built on top of the same core library that powers React Router.

Angular
The popular framework is now a version 9.

Mirage JS
An API mocking library that lets you build, test and share a complete working JavaScript application without having to rely on any back-end services.

Solid
A declarative, efficient, and flexible JavaScript library for building user interfaces that doesn't use a virtual DOM.

Alpine.js
A rugged, minimal framework for composing JavaScript behavior in your markup.

BlockLike.js
An educational JavaScript library that bridges the gap between block-based and text-based programming.

Testing and Debugging Tools

Beginner JavaScript by Wes Bos is 50% Off!
The master package includes 88 HD videos, part of 15 modules – and course updates are free forever.   promoted 

Screenshot Cyborg
Take a full-page screenshot of a webpage, up to 50 URLs at once. Choose to render the screenshot for desktop, tablet, or phone.

Stryker Mutator
A testing toolkit for JavaScript (also Scala and C#) that uses mutation testing, which means tests are run after bugs, or mutants, are automatically inserted into your code.

Cypress
Now at version 4+. Fast, easy, and reliable end-to-end testing for anything that runs in a browser.

Color Contrast Checker
Online tool that analyses and suggests colors that meet the required contrast ratio. Creates shareable links for chosen contrast checks.

LeakLooker X
Discover, browse and monitor database or source code leaks.

Animockup
Online prototype/animation tool to create animated mockups in your browser and export as video or animated GIF.

single-spa Devtools Inspector
A Firefox/Chrome devtools extension to provide utilities for helping with applications using single-spa (framework for front-end microservices).

micro-jaymock
Tiny API mocking microservice for generating fake JSON data.

The Contrast Triangle
Tool for simultaneously checking text, link, and background contrast. This one also has shareable links for specific tests.

Shieldfy
Automated security assistant that integrates with GitHub to show you potential vulnerabilities in your code.

puppeteer-in-electron
Use puppeteer to test and control your Electron application.

Site Builders, CMS's, Static Sites, etc.

Advanced React & GraphQL by Wes Bos is 50% Off!
The master package includes 68 HD videos, part of 10 modules – and course updates are free forever.   promoted 

LiveCanvas
Pure HTML and CSS WordPress builder that uses Bootstrap 4 and helps pages achieve better SEO results.

React Blog
A blogging system built on React where the blog posts are individual GitHub issues.

Calcapp
A cloud-based app designer enabling you to create apps without having to do any programming.

Factor JS
A JavaScript CMS platform that lets you build powerful and professional JavaScript applications fast.

NoCo
Enterprise-grade, no-code platform for Node or React developers. Generate code for most of your app, and only write the parts that make your product unique.

Sitebot
Create a personal website in a few minutes by just chatting. Seems to require Facebook Messenger login.

Webcodesk
A powerful visual development tool for building React apps. It's tightly coupled to the React API, so the knowledge translates directly.

BuilderX
A browser based design tool that codes React Native and React for you.

gatsby-plugin-next-seo
A plug-in that makes managing your SEO easier in Gatsby projects.

lego
A fast static site generator that generates optimised, performant websites.

Kodular
A drag-and-drop no-code app builder.

A Tweet for Thought

This thread establishes that password strength indicators are flawed.
 

Send Me Your Tools!

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

If a tech conference that you were going to attend has been cancelled, you might want to check out 40 Conferences Gone Virtual, by Spokable, which is tracking which conferences are happening online.

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly




libraries

[ASAP] Efficient Synthesis of 1,4-Thiazepanones and 1,4-Thiazepanes as 3D Fragments for Screening Libraries

Organic Letters
DOI: 10.1021/acs.orglett.0c01230




libraries

Shadow libraries: access to educational materials in global higher education / edited by Joe Karaganis

Browsery Z286.S37 S48 2018




libraries

Proceedings IEEE Workshop on Content-Based Access of Image and Video Libraries (CBAIVL 2001) [electronic journal].

IEEE Computer Society




libraries

Asian libraries [electronic journal] : the library & information services journal.

Bangkok : Library Marketing Services, 1991-c1999.




libraries

2000 Kyoto International Conference on Digital Libraries: Research and Practice [electronic journal].

IEEE Computer Society




libraries

Transforming research libraries for the global knowledge society [electronic resource] / edited by Barbara I. Dewey




libraries

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




libraries

181 JSJ The Evolution of Flux Libraries with Andrew Clark and Dan Abramov

Sign up for JS Remote Conf!

 

Dan and Andrew's super awesome, helpful document that they made for the show during preparation

03:22 - Andrew Clark Introduction

03:39 - Dan Abramov Introduction

04:03 - Flux

09:36 - Data Flow

22:52 - Conceptualizing React and Flux

27:50 - Documentation

30:38 - The Elm Programming Language

32:34 - Making Patterns Explicit in Frameworks

36:31 - Getting Started with React and Flux

  • Classes

42:42 - Where Flux Falls Short

58:23 - Keeping the Core Small; Making Decisions

Picks

Strange Loop 2015 Videos  (Jamison)
Typeset In The Future (Jamison)
Open-source as a project model for internal work (w/ speaker notes) by Kevin Lamping (Jamison)
Explanation of Zipf's Law (Dave)
Will Conant's talk at UtahJS 2015 on Flux (Dave)
The Legend of ZERO (3 Book Series) by Sara King (Joe)
Camel Up (Joe)
The Elm Programming Language (Joe)
Boundaries: A talk by Gary Bernhardt from SCNA 2012 (Aimee)
Nodevember (Aimee)
TV Fool (Chuck)
RCA Outdoor Digital HDTV VHF UHF Yagi Type Antenna (Chuck)
The Michael Vey Book Series (Chuck)
BusinessTown (Dan)
Elon Musk: The World’s Raddest Man (Dan)
Professor Frisby's Mostly Adequate Guide to Functional Programming (Dan)
Abiogenesis (Dan)
react-future (Dan)
The Righteous Mind (Andrew)
lodash-fp (Andrew)
Inside Amy Schumer (Andrew)
dataloader (Andrew)
Careers at OpenGov (Andrew)




libraries

Making SVG icon libraries for React apps

Using SVG is currently the best way to create icon libraries for apps. Icons built with SVG are scalable and adjustable, but also discrete, which allows them to be incrementally loaded and updated. In contrast, icons built as fonts cannot be incrementally loaded or updated. This alone makes SVG icons the better choice for high-performance apps that rely on code-splitting and incremental deploys.

This post describes how to make a package of React components from a library of SVG icons. Although I’m focusing on React, making any other type of package is also possible. At Twitter I used the approach described here to publish the company’s SVG icon library in several different formats: optimized SVGs, plain JavaScript modules, React DOM components, and React Native components.

Using the icons

The end result is a JavaScript package that can be installed and used like any other JavaScript package.

yarnpkg add @acme/react-icons

Each icon is available as an individually exported React component.

import IconCamera from '@acme/react-icons/camera';

This allows your module bundler to package only the icons that are needed, and icons can be efficiently split across chunks when using code-splitting. This is a significant advantage over icon libraries that require fonts and bundle all icons into a single component.

// entire icon library is bundled with your app
import Icon from '@acme/react-icons';
const IconCamera = <Icon name='camera' />;

Each icon is straightforward to customize (e.g., color and dimensions) on a per-use basis.

import IconCamera from '@twitter/react-icons/camera';
const Icon = (
  <IconCamera
    style={{ color: 'white', height: '2em' }}
  />
);

Although the icons render to SVG, this is an implementation detail that isn’t exposed to users of the components.

Creating components

Each React component renders an inline SVG, using path and dimensions data extracted from the SVG source files. A helper function called createIconComponent means that only a few lines of boilerplate are needed to create a component from SVG data.

import createIconComponent from './utils/createIconComponent';
import React from 'react';
const IconCamera = createIconComponent({
  content: <g><path d='...'></g>,
  height: 24,
  width: 24
});
IconCamera.displayName = 'IconCamera';
export default IconCamera;

This is an example of what the createIconComponent function looks like when building components for a web app like Twitter Lite, which is built with React Native for Web.

// createIconComponent.js
import { createElement, StyleSheet } from 'react-native-web';
import React from 'react';

const createIconComponent = ({ content, height, width }) =>
  (initialProps) => {
    const props = {
      ...initialProps,
      style: StyleSheet.compose(styles.root, initialProps.style),
      viewBox: `0 0 ${width} ${height}`
    };

    return createElement('svg', props, content);
  };

const styles = StyleSheet.create({
  root: {
    display: 'inline-block',
    fill: 'currentcolor',
    height: '1.25em',
    maxWidth: '100%',
    position: 'relative',
    userSelect: 'none',
    textAlignVertical: 'text-bottom'
  }
});

Setting the fill style to currentcolor allows you to control the color of the SVG using the color style property instead.

All that’s left is to use scripts to process the SVGs and generate each React component.

Creating icon packages

A complete example of one way to do this can be found in the icon-builder-example repository on GitHub.

The project structure of the example tool looks like this.

.
├── README.md
├── package.json
├── scripts/
    ├── build.js
    ├── createReactPackage.js
    └── svgOptimize.js
└── src/
    ├── alerts.svg
    ├── camera.svg
    ├── circle.svg
    └── ...

The build script uses SVGO to optimize the SVGs, extract SVG path data, and extract metadata. The example packager for React then uses templates to create a package.json and the React icon components shown earlier.

import createIconComponent from './utils/createIconComponent';
import React from 'react';
const ${componentName} = createIconComponent({
  height: ${height},
  width: ${width},
  content: <g>${paths}</g>
});
${componentName}.displayName = '${componentName}';
export default ${componentName};

Additional packagers can be included to build other package types from the same SVG source. When the underlying icon library changes, it only takes a couple of commands to rebuild hundreds of icons and publish new versions of each package.




libraries

Karen’s Letter: The Libraries We Love

Last month I wrote about third places ("What is a “third place,” and do you have one?"). Along with some great stories about your favorite third places, I received a few emails blasting me for not mentioning libraries. That was a shock, since Berkshire Publishing has close ties to libraries: we’ve written and published about

The post Karen’s Letter: The Libraries We Love appeared first on Berkshire Publishing.




libraries

The book in Mamluk Egypt and Syria (1250-1517): scribes, libraries and market / by Doris Behrens-Abouseif

Rotch Library - Z8.E4 B44 2019




libraries

Florida State University Libraries