This question is more philosophical than technical.
I've trained myself as a web developer back when web developers were called webmasters and my tool of choice was FrontPage, moving onto Evrsoft 1st Page 2000.
That was the last time I used an HTML image map.
Now it's HTML5, AJAX, vector canvasses, CSS 3D, jQuery, local storage, touchscreen Safari, you name it. The image map has faded into an obscurity where not even Google comes up with too many relevant results; a mandatory W3C Schools entry and some forum posts from 2004.
Obviously creating a website navigation or similar triviality using an image map was a bad idea back then and it certainly is inexcusable today.
But right now I have a task to create a polygon clickable area on top of a div with a background image.
I'd have no issue doing this in image map since it seems like it was designed for a use case exactly like this, and while I've done no tests, I couldn't imagine any browser dropping support for an element that worked beautifully for years. But I can't help but think that there must be a better way to do this today.
My web creation philosophy is to develop for IE5.5, and then design for Chrome edge. This means that the site first needs to work on a basic level on even the most antiquated browser, and then start adding JS & CSS to make it more beautiful, more usable, faster, simpler, friendlier and better.
As such, while I know I could do a canvas in Raphaƫl and add all kinds of snazzy hover effects and things, I think making functionality as simple as this shouldn't require a 89 kb (or X kb) JS library. Or even JS at all.
I don't know if CSS3 has capabilities to define polygonal areas, but while recognizing the great possibilities introduced by CSS3, I prefer keeping anything defined there as non-essential flair that would degrade gracefully.
So in today's webdev world, what would be the most cross-browser way to define a polygonal click area (preferably in a way that's grabbable by a jQuery .hover(), or at least a CSS :hover), that isn't dependent on JavaScript or CSS attributes available in a minority of browsers? Is image map really the only way to do it? What of mobile devices?
Why is using image maps for navigation inexcusable? It's a tool like any other; it has a time and place. Using imagemaps with javascript enhancements is backward compatible, degrades gracefully, and has 100% browser support. They don't need a plugin like flash.They've been supported practically since the dawn of the web browser. Just because something's old doesn't mean it isn't useful; quite the opposite, it means it's well supported.
I wrote a jquery plugin called ImageMapster to add effects to imagemaps so you could create interactive images without using flash. It would be easy to implement a tool that had the same functonality without Javascript support by replacing with a list in those cases. Personally, I think trying to write for the web without javascript is like trying to drive a car without tires. 99% of the web doesn't work without it any more. This isn't 1995. But if you really are concerned, the nice thing about imagemaps is the basic navigation functionality still works. There's no way to accomplish that just with CSS -- not even CSS3 if you have irregular shaped areas.
Related
Currently I am trying to build such customization of product in Bigcommerce Storefront that allows to display image with dynamic text, which was entered in Textbox. That means product image preview should be shown INSTANTLY with new image with written text.
so that the end user will know how the final product will looks like and also same image should go in shopping cart as well.
I know that there is an app on Shopify named as Product Builder.
Is this possible to do it on Bigcommerce?
Thanks in Advance
It's definitely possible with some fairly advanced client-side code. Unfortunately I don't know of any plug and play systems or apps for Bigcommerce that will achieve what you're looking for, but there are a couple ways to get a live updating product preview if you're willing to get your hands dirty.
Here's an example from my site. Click the button under "personalize this item", and you'll see a live preview image like you describe in the modal. Enter some text and change the monogram style and color, the preview image should update pretty quickly every time you change an option. A solution exactly like mine may not be feasible for you, since that site is using a pretty complex React/Redux implementation built on an extensively customized Stencil theme... it's far from a turnkey solution. That said, you could implement something similar without needing a totally custom app.
The image preview itself in the example above is powered by IMGIX.com. They offer a great service at a fantastic price. Basically my system translates the user-selected Bigcommerce option into a URL string per IMGIX's URL-based API. Displaying the live preview is then as simple as changing the image's src attribute to the corresponding IMGIX URL on every input change. I do this in a React component that consumes a Redux store, but something similar could definitely be done in the framework of your choice, or plain old vanilla JavaScript. Cloudinary offers a similar (maybe even a little bigger) feature set to IMGIX, but I found IMGIX to be a bit faster, and the pricing was considerably less for my usage.
You could also write something that uses the HTML5 canvas to overlay text and effects on an image, and thereby avoid using a third-party service. I found such a solution to be way more work and way more taxing on the client-side device, but it'd definitely be another way to skin the proverbial cat.
There may be other viable solutions out there, but the above has been my experience in implementing something similar to what you're looking for on Bigcommerce. I hope this is helpful!
I have to create mobile application for both IOS and Android.
I'm interested in use NativeSript problem is that, UI is quite complex and I'm not sure if this framework will manage this.
For my work with Js and Java is not a problem and I already have back-end side ready.
Best Regards
Luke
NativeScript can do anything a native Java/ObjC app can do; you have full access to the actual native OS controls from inside JavaScript. And all controls that are created are actually the native controls; so if you create 20 Java/ObjC controls or 20 controls in NS, they are still all the exact same type of controls as far as the Android (or iOS) runtimes are concerned, all the screen rendering is done the exact same way since NativeScript creates Native controls.
Now as to complex UI's, I have several apps with fairly complex UI's, however one thing I do is I frequently start with a single UI screen and then once happy with it I take pieces that I can and have those pieces dynamically load in/out when they are needed to keep the UI as simple (light memory usage) as much as possible. The UI can handle complex screens, but by showing less items (and eliminating any hidden items from memory) the UI is way more responsive in any language.
In my case web design and programming are becoming increasingly overlapping. I've mostly used Twitter bootstrap to design web interfaces for applications I've built. But, in my opinion it is rather an appliance that consists of ready interface parts to use. Oftentimes, web interfaces require some individual features, customisations etc. As the time goes I feel like I'd like to deliver better user experience and appearance of web pages I build. Having said that, I think I would need to perform following actions:
designing logos, icons, buttons, menus, backgrounds, clickable elements, like arrows for navigating, collapsing/expanding menus
because of mobile devices oftentimes the aforementioned elements will need to be resized in order to fit a particular resolution
Note, that I almost won't have anything to do with manipulating images. (I mean of course images will need to be resized before served to a device with a particular resolution, but I guess that is not an use case for Photoshop or similar programs.)
I'd like to know what tool would be suitable for this purpose.
I've been thinking about Photoshop and Illustrator, where Illustrator seems to be winning, because it is said to be able to create vector-based graphics that can be easily scaled and reused. However, Photoshop is claimed to be an industry standard and everything necessary for web design can be done with it.
I don't need any drag-and-drop graphics generating tool or something that would generate code for me, I can write HTML and CSS myself.
For designing logos, menus, buttons and other graphic elements, you have to use the pen tool and draw shapes tools.
If you ask me to choose one among Photoshop and Illustrator, I recommend Photoshop for simple graphic elements like buttons and menus. Illustrator is for more high end graphics, like background image graphics, illustrations and logos.
However, you have to gain some basic knowledge of pen tools, shapes tools, and in Illustrator, the path finder, mesh tool and gradient tools before you start.
Can someone please guide me regarding which touch framework (javascript) I should use to make a tablet app? I am new to this area and I am looking for something which allows me to play with my own UI design comfortably.
I went through sencha as I heard its apt for a tablet app environment but I am (sorry, it might sound odd) not able to make out whether I can use my own UI design to make app in sencha. Or any other framework (stable) allows to use custom UI design?
There aren't any major differences between handsets and tablets, except for the screen size. For example, what you would show in a handset in one long scrolling screen, would be shown in a split-screen on a tablet (I am concentrating on the user-experience here).
Split-screen support in still rare in the jscript frameworks, since webkit browsers didn't fully support scrolling only parts of a page (i.e. an iframe or overflow:scroll divs), this support is only now starting to get materialized with iOS5 (Android already had this since 2.2, but it never worked right).
There have been other jscript solutions (like iScroll), but being client code they are not always bringing the full "experience" to the client.
The JQuery-Mobile docs have a version under testing, you can try that in a tablet/handset to see the differences.
Regarding your "own UI design", if you mean colors/icons/buttons that's possible on any framework. Where the problems start is when you want to create custom layouts, and each framework provides partial support depending on what exactly you want to achieve.
In general, I'd say Sencha totally separates you from HTML design - you build everything using JSON controls and it has an extensive events/rendering code (of course you can write your own controls), whereas frameworks like JQuery mobile work directly on the HTML (you specify data-* attributes for the details) and renders it almost the same (ok, it does adds wrapping layers, but in general it's still pure HTML).
As always, "it depends" on what you want to achieve and what you are ready to give up... ;-)
Sencha Touch (our framework) is particularly well suited to tablet apps because it has an implementation of multiple scrollable areas that works on older iOS and RIM devices, not just iOS5. But, the intention with Sencha Touch is that you create your app using the built-in UI components (carousels, momentum lists, tabs, etc.) or, if you have unique UI elements, then you will need to extend an existing component or build a custom component. If you're expecting to be able to slap some of your own HTML into innerHTML or even a Touch xTemplate, then you will be setting yourself up for failure. But the good news is that there are tutorials on doing your own components, and there are plenty of apps that you can look at the source of, in order to guide your development. Lots of people have built apps with custom UI's
You need some level of JavaScript experience to use Sencha Touch, so if you're coming from a non-JavaScript web design background, you'll have to get down the JavaScript learning curve first.
There is no questions: UI-First Software Development. But what does it takes to do the UI first?
I started to build a website, a complicated one, and know I start to concern about the UI. Instead to start coding html+css, I decided to start with SkecthFlow. now, I'm very confused. Do I want to build a exact sketch? meaning to think about colors, fonts make sure that the button will look like a web link... etc, or just build the application sketch flow? meaning put a textboxes and buttons. Do I need to implement every thing in SketchFlow first?
I'm looking for best practice.
When I am doing wireframes, the goal is to NOT have the user/reviewer worry about colors/fonts/etc. but rather to have them focus on the details of the UI workflow/screen flow and specific types of controls they want to use. Even placement of the controls is secondary unless it impacts usability.
That's why SketchFlow comes with the style set that has the UI look like hand-drawn black and white chalkboard drawings.
Many non-programmers (and some programmers too) get hung up on colors, fonts and graphic design, which can suck up a bunch of time early in a project. All of that can easily be done later, when the functionality is all decided upon and in development.