February 08, 2020
Galleries are a common component in web sites. They can appear in many different forms. Portfolios of graphic artists contain galleries of author’s work, e-commerce sites contain galleries of product images, and news sites contain galleries of events.
Centerpiece of a gallery is the image. Yet a gallery is not just an image. Often, meta-data accompanies the image. Examples of meta-data include title and description of the image. Image descriptions often rely on user being able to cross-reference with the image. This assumption does not hold true for screen-reader users. Thus images even in galleries should be accompanied by alternative texts if feasible. Depending on circumstances, there could be more data. If the gallery contains images from many authors, it would be useful to accompany images with author’s names. In a technical setting, it might be useful to include photo specifications in form of Exif data.
The gallery itself is a collection of images. It contains thumbnails to navigate the gallery. The order of the images is not random. Images in the gallery form a doubly linked list, with a previous and next image. Active image could be the image that is in focus. If an image is in the focus, the gallery can show thumbnails of the previous and next image. When no image is in focus, a gallery would display thumbnails of several images. To avoid showing thousands of previews in big galleries, the number of thumbnails must be limited.
Obviously, no gallery has come to existence without anybody creating it first. Creating a gallery should be easy. It should also be easy to share galleries, for example by e-mail. This is useful when content creation is a team effort, and needs coordination. My ideal workflow to create an online gallery would be 1) create a folder in Dropbox, 2) put the images in there. It could work, but not quite. If I wanted to add title or meta-information, options for that would be rather limited. Ordering the images would also be problematic.
I would assume this is a solved problem, but I have not yet found a good solution.