From 49b52e108b608b336ecbbd8bea6d26ac0adceb6e Mon Sep 17 00:00:00 2001 From: capjamesg Date: Tue, 11 Oct 2022 11:56:51 +0100 Subject: add readme and example image --- README.md | 39 +++++++++++++++++++++++++++++++++++++++ hovercard.js | 13 +++++++------ screenshot.png | Bin 0 -> 368907 bytes 3 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 screenshot.png diff --git a/README.md b/README.md index 0af99d0..439dc2b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,41 @@ # hovercard.js + A script to load cards when you hover over a link in an article. + +## Example + +![Text in an article with an active hovercard that contains an image, a title, and a description](screenshot.png) + +## Getting Started + +The `hovercard.js` script searches for all `` tags enclosed within an `
` tag on a web page. Mouse hover and focus listeners are added to each link. When the mouse hovers over a link, `hovercard.js` looks for the `href` value of the link in a JSON object called `hovercards`. If the link is found in the JSON object, a hovercard is added directly below the link on the page. + +When a user hovers off the link or moves focus onto another element (i.e. by using the keyboard to navigate links on the page), the hovercard will disappear. + +## Usage + +To use the hovercard script, first download a copy and upload it to your site. Then, add this code above the closing `` tag on your web page: + + + +Substitute the path of the script in the example above with the location of the script on your site. + +You should add a JSON object to every page that contains a hovercard. This JSON object should use the following structure: + + { + "https://example.com": { + "title": "Example Domain", + "description": "This domain is used for examples." + "photo": "https://example.com/example.png" + } + } + +Keys in the JSON object represent links on the page to look up. The only required key value is `title`. If a description and/or photo are provided, these will be included in the hovercard. + +## License + +This code for this project is placed in the public domain. + +## Contributors + +- capjamesg \ No newline at end of file diff --git a/hovercard.js b/hovercard.js index 3c765c1..9b8a92e 100644 --- a/hovercard.js +++ b/hovercard.js @@ -1,8 +1,7 @@ // comment out this variable to add your own hovercards -var hovercards = { - "https://www.w3.org/community/sustyweb/": {"title": "Sustainable Web Design Community Group", "A community group -dedicated to creating sustainable websites. This group will not publish specifications." } - }; +// var hovercards = { +// "https://www.w3.org/community/sustyweb/": {"title": "Sustainable Web Design Community Group", "A community group dedicated to creating sustainable websites. This group will not publish specifications." } +// }; var article = document.getElementsByTagName("article"); @@ -11,10 +10,11 @@ dedicated to creating sustainable websites. This group will not publish specific } function hover (target_link) { - if (hovercards[target_link]) { + var hovercard_data = hovercards[target_link.href.replace(/\/+$/, "")]; + if (hovercard_data) { var new_box = document.createElement("div"); new_box.classList.add("hovercard"); - new_box.innerHTML = hovercards[target_link]; + new_box.innerHTML = "" + hovercard_data["title"] + "

" + hovercard_data["description"] + "

"; new_box.style.top = window.scrollY + target_link.getBoundingClientRect().top + "px"; new_box.style.left = window.scrollX + target_link.getBoundingClientRect().left + "px"; new_box.id = "tooltip"; @@ -48,3 +48,4 @@ dedicated to creating sustainable websites. This group will not publish specific unhover(this); }); } + diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..b197b6f Binary files /dev/null and b/screenshot.png differ -- cgit v1.2.3