to apply shipping to some items but no others, you need to create a new column in the eCart object that will be used to mark items that shipping applies to and items it does not apply to.
Crate a new column called freeShip.
In the add to cart button, set the freeShip column to 1 for items that should get a shipping charge and 0 for items that shipping should apply to.
then when creating the shipping rule, set the trigger to "number of items with a specific column value":
If the total number of items where "freeShip" has a value of "0" is ">" a value of "0"
For the calcualtion, use "Based on Items with a specific value "TotalPrice" where "freeShip" has a value of "0" "times" "0.10"
this will apply a 10 percent charge to all items where freeShip is set to 0.